[]找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
如果每次新的需求一来,都会使某方面的代码发生变化,那么你就可以确定,这部分的代码需要被抽出来,和其他稳定的代码有所区分。
[]针对接口编程,而不是针对实现编程
接口编程关键就在于多态,利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为,不会被绑死在超类型的行为上。
[]多用组合,少用继承
使用组合建立系统具有很大的弹性,不仅可将算法族封装成类,更可以在运行时动态地改变行为,只要组合的行为对象符合正确的接口标准即可。
策略模式
[]为了交互对象之间的松藕合设计而努力
观察者模式:改变被观察者或观察者其中一方,并不会影响另一方。因为两者是松藕合的,所以只要它们之间的接口仍被遵守,我们就可以自由改变它们。
[]类应该对扩展开放,对修改关闭
目标是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为,如能实现这样的目标。好处是这样的设计具有弹性可以应对改变。可以接受新的功能来应对改变的需求。
代码应该免于改变,能否扩展。
装饰模式
[]最少知识原则:减少对象之间的交互,只和你的密友谈话
在设计一个系统,不管是任何对象,你都要注意它交互的类有哪些,并注意它和这些类是任何交互的。
在任何的对象中,在该对象的方法内,我们只应该调用属于以下范围的方法
1.该对象本身的方法
2.被当做方法的参数而传递进来的对象的方法
3.此方法所创建或实例化的任何对象的方法
4.对象中实例变量所引用的任何对象的方法
注意:如果某对象是调用其他方法的返回结果,不要调用该对象的方法。
外观模式
[]好莱坞原则:别调用我们,我们会调用你
当高层组件依赖低层组件,而低层组件又依赖高层组件,而高层组件又依赖边侧组件,而边侧组件又依赖低层组件时,依赖腐败就发生了,在好莱坞原则下,允许低层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些低层组件,也就是说,高层组件对待低层组件的方式是”别调用我们,我们会调用你”。低层组件绝不可以直接调用高层组件。
模版方法模式
[]一个类应该只有一个引起变化的原因
将一个责任只指派给一个类。尽量让每个类保持单一责任。
迭代器模式
[]依赖倒置原则
要依赖抽象,不要依赖具体类
不能让高层组件依赖底层组件,而且,不管高层或底层组件,”两者”都应该依赖抽象。
要实现依赖倒置原则可以这样做:
()变量不可以持有具体类的引用,采用工厂模式的方式来创建对象。
()不要让类继承具体类,采用继承抽象类。
()不要覆盖父类中已实现的方法,
工厂模式