* 本文内容由《我们的设计模式》这本书总结而来,方便自己理解。
策略模式
“诸葛亮给了赵云一个锦囊,锦囊中有三个妙计。”
方法存放在策略类中,使用者只需要打开锦囊调用中间的方法即可。
特点:高内聚,低耦合,方便扩展
代理模式
西门庆和潘金莲幕后还有个王婆。
表面上是王婆和西门庆勾搭,实际上王婆只是个中间人,背后主事的是潘金莲。除了潘金莲,王婆这个代理人还可以代理其他被代理对象。
特点:代理人和被代理人实现同一个接口,代理人的具体实现由被代理人完成。
单例模式
只有唯一的一个特定的皇帝。
如果没有皇帝就创建一个皇帝,如果有皇帝就是之前的那个皇帝。反正只能有一个唯一的皇帝。
在创建类的时候就new一个皇帝出来给成员变量,如果需要皇帝就用类中的这个皇帝。
多例模式
一个时期有俩皇帝,随便拉一个皇帝就行。
这里只讲有上限的多例模式。我们需要找到所有的实现,将他们列出来。如果已经达到上限了就不能继续创建皇帝。
在使用时随便拉一个实例就行。
简单工厂模式
女娲造人,什么人种都可以。
定义人类接口的属性和方法,定义这个接口的具体实现(人种)。剩下要做的就是通过女娲这个机器造人。
抽象工厂模式
不同性别不同人种。
- 一个接口:人类
- 不同的抽象类:人种 -- 产品等级
- 不同的实现:不同性别的人种 -- 产品族
接下来工厂进行造人就要分两个流水线,一个流水线造男性,一个流水线造女性。
门面模式
把固定动作封装起来。
假设有一个寄出信件的过程,在原来我们需要写信 - 把信装进信封 - 写信封 - 投递,如果需要多次重复显然是很麻烦的。
而如果使用了门面模式,我们就可以把中间固定的动作封装起来,我们只需要提供必要的信的内容和信封内容,其他动作都交给一个方法帮助实现,如果后续需要对这些步骤进行扩展,也只需要在方法中添加步骤即可。
这是一个很好用的封装方法,如果一个子系统比较复杂,就可以封装出一个或多个门面出来。