Version: Next
Composite组合模式
定义:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
源发问题
一个组合对象往往由若干个构建对象组成,并且一个组合对象有可能是另一组合对象的构件。 组合对象和构建对象在功能执行上没有差别
解决方案
构造“整体-部分”这种具有树层次结构的系统。在类图种,Leaf和Composite继承抽象类Component,Composite和Component之间的关系为聚合关系,这样凡是Component的具体子类都能加入Composite中,包括Composite自身,并且Composite和Leaf具有统一的功能操作接口
UML类图
代码
优缺点
- 优点 已与表达具有递归特点的树形层次结构的系统,并且结构中的每个对象操作方法都一直,从而简化客户端代码的编写
- 缺点 加入Composite中的对象出现同质化,即所有对象都只能从Component角度去认识,因而Component的任何改变将会扩散到整个结构当中