组合模式

1、解决什么问题?

当我们的要处理的对象可以生成一颗树形结构,而我们要对树上的节点和叶子进行操作时,它能够提供一致的方式,而不用考虑它是节点还是叶子。

2、什么是组合模式?

允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及组合对象。

3、UML图
组合模式包含如下角色:
  • Component :抽象构件角色
  • Leaf:叶子构件角色(相当于叶子)
  • Composite:树枝或容器角色(相当于非叶子节点)
4、使用场景
  • 资源管理器
  • XML文件解析
  • 组织架构处理
  • JUnit框架:TestCase(叶子)、TestUnit(容器)
5、优缺点

优点:

  • 简化客户端操作。客户端只需要面对一致的对象。
  • 具有较强的扩展性。当我们要更改组合对象时,我们只需要调整内部的层次关系,客户端不用做出任何改动。
  • 方便创建出复杂的层次结构。客户端不用理会组合里面的组成细节,容易添加节点或者叶子从而创建出复杂的树形结构。

缺点:

  • 要求较高的抽象性,如果节点和叶子有很多差异性的话,比如很多方法和属性都不一样,难以实现组合模式。

results matching ""

    No results matching ""