设计原则
-
多用组合少用继承。
-
找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混合在一起。
-
针对接口编程,而不是针对实现编程。
-
为了交互对象之间的松耦合设计而努力。
-
类应该对扩展开放,对修改关闭。
-
要依赖抽象,不要依赖具体类。
-
最少知识原则:只和你的密友谈话。(相当于类间交互适当封装,减少耦合,只让必要部分交互)
-
好莱坞原则:别调用我们,我们会调用你。(高层组件控制何时调用底层组件)
-
一个类应该只有一个引起改变的原因。(使一个类具有单一的责任,避免类的改变引起大范围的修改,实现类的高内聚)
-
单一职责( 一个类和方法只做一件事 )
-
里氏替换( 多态,子类可扩展父类 )
-
依赖倒置( 细节依赖抽象,下层依赖上层 )
-
接口隔离( 建立单一接口 )
-
迪米特原则( 最少知道,降低耦合 )
-
开闭原则( 抽象架构,扩展实现 )
策略模式
观察者模式
- 定义:定义了对象之间的一对多依赖,这样一来,当一个对象的状态改变时,他的所有依赖着都会受到通知并自动更新。
- 其中java中有内置观察者模式的接口,java.util.Observer和java.util.Observable。缺点就是无法在通知时自定义一些行为。
- 例子:气象站与布告板,气象站的温度改变,布告板就需要知道改变的温度。
装饰者模式
- 定义:定义动态地将责任附加到对象上。若要拓展功能,装饰着提供了比集成更有弹性的替代方案。
- 例子:饮料分为多种,添加不同的调料,支持调料多次添加。设置调料味装饰者。
- java中的例子java IO类,FilterInputStream为一个装饰者。