设计模式是大量经验的总结,是依据单一职责、开放——封闭、依赖倒转……等原则在结构上对代码进行的优化。经过一段时间的学习,我将所有设计模式做了一个分类,如图所示:
![](https://box.kancloud.cn/2016-02-19_56c6b939250e3.jpg)
## 一、类的实例化
本类中的设计模式都旨在优化类的实例化这个过程,通过继承将复杂的类分解为职责单一的几个类。为了应对类的数量的增加,引入专门负责实例化的类,通过多态灵活的选择合适的类实例化成对象。其中单例模式是为了控制对象存在的数量,虽然也是实例化过程有关的模式,但有别于其他模式。
## 二、类间通信
本类中的设计模式主要都是对类间通信有关的优化,从而减低类间耦合度。在本类中接口是非常重要的部分,接口将联系紧密的两个类变成不直接相关的两个类,而是各自于接口建立相对稳定的通信关系。其中代理模式是这些设计模式的基础模式。
##三、类的组合
本类中的设计模式主要关注于类的组合和聚合关系。即组合/聚合复用原则,减少继承的使用。
## 四、类的复用
本类中的设计模式旨在对代码中类的重复使用的优化。避免了需要不停的创建新实例对软件性能产生的不良影响。或者是对已经死亡的实例的从新使用,避免重建实例。
对于以上的分类,由于自己本身对模式的理解还不是非常清晰,有些模式的分类不是很合理。