设计模式——组合模式
一、概念:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
二、UML示意图:
Leaf和Composite的关系是单个对象和组合对象的关系,他们都继承于Component抽象类,所以都有Add、Remove和Operation方法,所以客户端对于Leaf和Composite对象能使用一致的方法,不需要区分他们是组合还是单个对象。
三、优缺点
优点:
- 客户端可以不需要区分自己在操作的是组合对象还是单个对象。简化了客户端的代码
- 即使是有不同的类Leaf对象(也就是同样都是单个对象,但是却不是不同的类),也只需要新增一个继承自Component类的类就行了,不需要修改源代码,符合开闭原则。
缺点:
- 设计较复杂,客户端需要花更多时间理清类之间的层次关系