1.设计模式入门

原则1:找出应用中可能变化的部分,并独立出来,不需要和那些不变的东西混合在一起。(变与不变)

原则2:针对接口编程,不要对实现编程。(抽象)

原则3:多用组合,少用继承。(组合弹性)

2.观察者模式

定义:对象之间的一对多依赖,这样当一个对象状态改变时,依赖者收到状态改变并自动更新。

Observer与Object的关系:理解为订阅者与出版社的关系。

松耦合的威力:当两个对象之间松耦合,他们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和对象松耦合。

原则4:为了交互对象之间的松耦合设计而努力。(松耦合)

3.装饰者模式

定义:动态将责任附加到对象上,若要扩展功能,装饰者提供了比继承共有弹性的替代方案。

原则5:类应该对扩展开放,对修改关闭。(适度开闭)

4.工厂模式

定义:定义一个创建对象的接口,但由于子类决定要实例化的类是哪一个。工厂方法把类的实例化推迟到子类。

原则6:依赖抽象,不要依赖具体类。(依赖倒置)

5.单件模式

定义:确保一个类只有一个实例,并提供一个全局访问点。

6.命令模式

定义:将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。支持撤销。

7.适配器与外观模式

适配器定义:将一个类的接口,转换成客户期望的另一个接口。适配器用来兼容的接口。

外观模式定义:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。

原则7:最少知识原则。(只和朋友交谈)

8.模板方法模式

定义:在一个方法中定义一个算法的骨架,而将一些步骤推迟到子类。模板方法使得子类可以不改变算法结构的情况下,重新定义算法中的一些步骤。

原则8:别调用我们,我们会调用你。(好莱坞原则)

9.迭代器与组合模式

迭代器定义:提供一中方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。

组合模式定义:允许你将对象组合成树形结构来实现“整体/部分”层次结构。组合让客户以一致的方式处理个别对象以及对象组合。

原则9:一个类应该只有一个引起变化的原因。(单一责任)

10.状态模式
11.代理模式
12.复合模式
N.其他模式

桥接,生成器,责任链,蝇量,解释器,中介者,备忘录,原型,访问者···