从学习设计模式到现在有3个月了,原计划2个月学完,因为这段时间工作比较忙有所耽搁,所以直到现在才把书和视频啃完。经过这段时间的学习,学到了很多东西,主要是对OO有了更多的认识,以前的的认识不过是语言层面的,而现在在设计层次有了更多认识。李建忠老师的视频真的很有用,之前看设计模式这本书都是雾里看花,不是看得很清楚,理解也不到位,甚至觉得很苦涩,通过他视频的重新梳理,回过头来理解设计模式这本书的内容来是如此的轻松!这也使我真正体会到了这本书的巨大价值,他没有提供很多实际性的例子,但是在思想上给了我们很大的提高。在我现在所做的项目中,已经开始应用这些模式,也许用得不是很好,但是至少是个好的开始。这两天在china-pub上找《面向对象分析和设计》、《敏捷软件开发:原则、模式与实践》这两本书,第一本好像翻译得不怎么样,而且第三版也出了很久了但是一直都没引进,所以暂时买第二本吧,昨天已经下订单了,希望明天能到货。还是来简要回顾下各个设计模式。
1、创建型模式:
Singleton:限制实例化对象的个数,比如抽象工厂中的工厂、对象池等。
Abstract Factory:创建一系列相互依赖对象,并能在运行时改变系列。
Factory Method:创建单个对象,在Abstract Factory有使用到。
Prototype:通过拷贝原型原型对戏那个来创建新的对象。
2、组合模式
Adapter:实现接口转换,用于旧代码复用、类库迁移等。
Bridge:实现抽象和实现的分离,支持对象多维度的变化。
Composite:屏蔽对象容器内部实现结构,实现对象和对象容器使用的一致性。
Decorator:实现对象功能的扩展,避免子类膨胀。
Facade:屏蔽各子系统的复杂性,提供更高层接口供客户访问。
Flyweight:通过共享大量细粒度对象,提供系统性能。
Proxy:通过增加间接代理,实现更多控制,屏蔽复杂性。
3 、行为型模式
Chain of Responsibility:动态构建职责链,实现事务处理。
Command:将一组行为抽象为对象,实现行为请求者和行为实现者之间的解耦。
Interpreter:将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。
Iterator:屏蔽集合对象内部复杂结构,提供客户程序对它的透明遍历。
Mediator:封装一系列对象之间的复杂交互,使他们不需要显式相互引用,实现解耦。
Observer:实现对象状态改变,通知依赖它的对象并更新。
Memento:实现对象状态保存及恢复。
State:封装对象状态,从而在其内部状态改变时改变它的行为。
Strategy:封装一系列算法,从而可以随时独立于客户替换算法。
TemplateMethod:定义算法骨架,通过子类虚函数重写实现子方法的改变。
Visitor:在类层次结构中,在不改变各类的前提下定义作用于这些类实例的新的操作。
设计之路刚刚开始,还需继续努力