前言
《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:
- 该模式的介绍,包括: 引子、意图(大白话解释) 类图、时序图(理论规范)
- 该模式的代码示例:熟悉该模式的代码长什么样子
- 该模式的优缺点:模式不是万金油,不可以滥用模式
- 该模式的应用案例:了解它在哪些重要的源码中被使用
该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我的个人公众号:后端技术漫谈,不会错过精彩好看的文章。
系列文章回顾
- 【设计模式自习室】开篇:为什么我们要用设计模式?
- 【设计模式自习室】建造者模式
- 【设计模式自习室】原型模式
- 【设计模式自习室】透彻理解单例模式
- 【设计模式自习室】理解工厂模式的三种形式
- 【设计模式自习室】适配器模式
- 【设计模式自习室】装饰模式
- 【设计模式自习室】桥接模式 Bridge Pattern:处理多维度变化
- 【设计模式自习室】门面模式 Facade Pattern
- 【设计模式自习室】享元模式 Flyweight Pattern:减少对象数量
- 【设计模式自习室】详解代理模式
结构型——组合模式 Composite
引子
组合模式是为了表示那些层次结构,同时部分和整体也可能是一样的结构,常见的如文件夹或者树。
上图来自:
https://www.cnblogs.com/betterboyz/p/9356458.html
从上图可以看出,文件系统是一个树结构,树上长有节点。树的节点有两种,一种是树枝节点,即目录,有内部树结构,在图中涂有颜色;另一种是文件,即树叶节点,没有内部树结构。
定义
组合模式定义了如何将容器对象和叶子对象进行递归组合,使得客户在使用的过程中无须进行区分,可以对他们进行一致的处理。
在使用组合模式中需要注意几点也是组合模式最关键的地方:叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因。
合成模式的实现根据所实现接口的区别分为两种形式,分别称为安全式和透明式,将在类图一节中详细介绍两种形式。
类图
安全式合成模式
安全模式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中。
- Compon