定义
组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性
主要角色
- 抽象组件(Component)角色:抽象角色,给参加组合的对象规定一个接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件
- 树叶组件(Leaf)角色:在组合中表示叶节点对象,叶节点没有子节点。在组合中定义图元对象的行为。
- 树枝组件(Composite)角色:存储子部件。定义有子部件的那些部件的行为。在Component接口中实现与子部件有关的操作。
适用性
- 你想表示对象的部分-整体层次结构。
- 你希望用户忽略组合对象和单个对象的不同,用户将统一地使用组合结构中的所有对象。
一句话理解
将树状结构中的叶子可以通过自己组合成所需要的一个集合
比如公司下有多个部门,多个部门可以理解为多个叶子,可以通过自己组合部门,组成一个你需要使用的部门集合
比如一个游戏里的军队,多种士兵类型就是多个叶子,可以组合成自己需要的部队
实例
1 |
|
参考
[设计模式详解以及PHP实现][http://yansu.org/2014/04/19/design-patterns-of-php.html]