Version: Next

Composite组合模式

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

源发问题

一个组合对象往往由若干个构建对象组成,并且一个组合对象有可能是另一组合对象的构件。 组合对象和构建对象在功能执行上没有差别

解决方案

构造“整体-部分”这种具有树层次结构的系统。在类图种,Leaf和Composite继承抽象类Component,Composite和Component之间的关系为聚合关系,这样凡是Component的具体子类都能加入Composite中,包括Composite自身,并且Composite和Leaf具有统一的功能操作接口

UML类图

image-20200414213754146

代码

优缺点

  • 优点 已与表达具有递归特点的树形层次结构的系统,并且结构中的每个对象操作方法都一直,从而简化客户端代码的编写
  • 缺点 加入Composite中的对象出现同质化,即所有对象都只能从Component角度去认识,因而Component的任何改变将会扩散到整个结构当中