使用特点:
凡是树形结构,就考虑使用组合模式
或者体现局部与整体结构关系的,就是整体中可以抽离部分模块或者功能的场景,就考虑使用组合模式
优点:
父层级调用简单
可以无限扩展叶子结点
缺点:
根节点与叶子结点使用的时候定义,直接定义的 类。 这就局限了 接口 的影响范围。不属于面向接口,与依赖倒置相违背。
需要的角色包括以下几个,借鉴上图:
Corp 核心,可以是接口或者抽象类。里面定义了 相同的模块或功能。
Branch 分支结点 里面有 额外的模块与定义
Leaf 叶子结点,一般 里面仅有所有结点共同具有的模块或者功能,一般不具有额外的功能。
code demo 见项目。