设计模式
设计原则
依赖倒置
- 高层模块不应该依赖低层模块,两者都应该依赖抽象;
- 抽象不应该依赖具体实现,具体实现应该依赖于抽象;
开放封闭
- 一个类应该对扩展(组合和继承)开放,对修改关闭;
面向接口
- 不将变量类型声明为某个特定的具体类,而是声明为某个接口;
- 客户程序无需获知对象的具体类型,只需要知道对象所具有的接口;
封装变化点
- 将稳定点和变化点分离,扩展修改变化点;让稳定点和变化点的实现层次分离;
单一职责
- 一个类应该仅有一个引起它变化的原因;
里氏替换
- 子类型必须能够替换掉它的父类型;
接口隔离
- 不应该强迫客户依赖于它们不用的方法;
- 一般用于处理一个类拥有比较多的接口,而这些接口涉及到很多职责;
- 客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上;
组合优于继承
- 继承耦合度高,组合耦合度低;
模板方法
定义一个操作中的算法的骨架 ,而将一些步骤延迟到子类中。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
观察者模式
定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
策略模式
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户程序而变化