设计模式学习(十三)(组合模式)

模式名称

组合模式(Composite Pattern)

解决问题

它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

在公司中就是一种树形结构,分为领导与普通员工,领导可能管理着部分员工和其他相对低级的领导,这时候我们可以利用组合模式来解决这个问题。

解决方法

1.Component:组合中的对象声明接口,在适当情况下实现所有类共有的默认行为,声明一个接口用于访问和管理Component的子组件。在递归结构中定义一个接口,用于访问一个父部件,并在合适的情况下实现它。(可选)

2.Leaf:在组合中表示叶节点,叶节点没有子节点,定义对象的基本行为。

3.Composite:定义有子部件的那些部件的行为,存储子部件并在Component接口实现与子部件有关的操作。

4.Client:通过Component接口操作组合部件的对象。

组合模式的优点

1.允许客户端对叶节点和枝节点一视同仁。

2.方便处理层次结构的问题。

组合模式的缺点

1.枝节点的责任比较复杂。

2.需要客户端需要加入一些判断来保证安全性。

代码

(完)

打赏