最近读了一本关于设计模式的书《大话设计模式》,该书以叙述故事的形式,讲述了很多的设计模式,让人耳目一新,印象深刻。
- 状态模式
1)定义

2)模式图

3)个人体会:
定义了一个 状态的接口,各种状态就可以实现这个接口,增加状态时,就直接增加子类就行了,不用动别的子类。省去了很多 if else的判断,满足了 ‘开发-闭合’原则
- UML类图

- 适配者模式
1)类图:

2)姚明在 NBA打球,需要翻译的例子
- 备忘录模式
1)就是讲一个 类的状态保存在一个叫备忘录的类中,这样可以在需要的时候恢复这个类的这些状态。
列举的例子是 打游戏保存进度的例子。但是这样会比较耗费内存资源
- 组合模式
1)类图:

2)组合模式,就是 实现 有部分 和 整体的关系时,可以使用,实际的例子就是 分公司和 总公司的关系等 树形结构
6. 迭代器模式
1)就是循环遍历,比如 PHP语言中已经实现了 foreach
7. 单例模式
1)单例模式,保证一个类,只被实例化一次。可以将这个类的构造方法变成是 protect或者是 private类型的,这样防止这个类,在外部通过new被实例化,而是在其内部,提供一个 getInstance的函数,检查实体是否存在,存在直接返回,不存在,在创建。
比如公司常见的 client的实例化,就是 UserClient::getInstance()
8.桥接模式(聚合/合成模式)
1) 模式的定义,少用继承,多用合成

- 命令模式:
