组合模式-Composite

Posted LionheartCGJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合模式-Composite相关的知识,希望对你有一定的参考价值。

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

组合模式结构图:

透明方式与安全方式:

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

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

代码实现:

 

以上是关于组合模式-Composite的主要内容,如果未能解决你的问题,请参考以下文章

组合模式(Composite)

设计模式学习篇-Composite组合模式

组合模式-composite

设计模式:组合模式(Composite)

组合(composite)模式

设计模式组合模式 Composite