使用特点:

  1. 凡是树形结构,就考虑使用组合模式

  2. 或者体现局部与整体结构关系的,就是整体中可以抽离部分模块或者功能的场景,就考虑使用组合模式

优点:

  1. 父层级调用简单

  2. 可以无限扩展叶子结点

缺点:
根节点与叶子结点使用的时候定义,直接定义的 类。 这就局限了 接口 的影响范围。不属于面向接口,与依赖倒置相违背。

组合模式 - 图1

需要的角色包括以下几个,借鉴上图:

  1. Corp 核心,可以是接口或者抽象类。里面定义了 相同的模块或功能。

  2. Branch 分支结点 里面有 额外的模块与定义

  3. Leaf 叶子结点,一般 里面仅有所有结点共同具有的模块或者功能,一般不具有额外的功能。

code demo 见项目。