码迷,mamicode.com
首页 > 其他好文 > 详细

组合模式-Composite

时间:2017-06-15 10:40:58      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:节点   代码   用户   功能   组合   区别   客户端   pos   style   

组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

组合模式结构图:

技术分享

透明方式与安全方式:

  • 透明方式:在Component中声明所有用来管理子对象的方法,例如add remove的等。这样继承Component的所有子对象都具备了add和remove方法。这样做的好处是叶节点和树枝节点对于外界没有区别,他们具有完全一致的行为接口。但是问题也很明显,因为Leaf类本身不具备add和remove方法的功能,所以实现它是完全没有意义的。
  • 安全方式:在Component中不去声明add和remove方法,那么子类Leaf也就不需要去实现它,而是在Component声明所有用来管理子类对象的方法,不过由于不够透明,所以树叶和树枝类将具有不同的方法,客户端在调用的时候需要做相应的判断,带来了不便。

何时使用组合模式:需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同时,统一使用组合结构中的所有对象时,就因该考虑用组合模式了。

代码实现:

技术分享

技术分享

技术分享

技术分享

 

组合模式-Composite

标签:节点   代码   用户   功能   组合   区别   客户端   pos   style   

原文地址:http://www.cnblogs.com/LionheartCGJ/p/7011777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!