-
单一职责原则 Single Responsiblity Principle
定义:应该有且仅有一个原因引起该类变更
解释:一个类或接口只有一个职责,只负责一件事
好处:降低类的复杂度,提高可读性,增加可维护性,降低变更引起的风险
-
里氏替换原则 Liskov Subsitution Principle
定义一:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型
定义二:所有引用基类的地方必须能透明地使用其子类的对象
解释:只要父类出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道父类还是子类
好处:增强程序的健壮性,版本升级时也可以保持非常好的兼容性。即使增加子类,原有的子类还可以继续执行
-
依赖倒置原则 Dependence Inversion Principle
定义:高层模块不应该依赖底层模块,两者都应该依赖抽象;抽象不应该依赖细节;细节应该依赖抽象。
解释:面向接口编程
好处:通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合
依赖注入的三种方式:1.构造方法注入 2.set方法注入 3.接口注入
-
接口隔离原则
定义:客户端不应该依赖它不需要的接口;类间的依赖关系应该建立在最小的接口上
解释:接口要尽量小;接口要高内聚;定制服务;一个接口只服务于一个模块或业务逻辑;被污染的接口使用适配器模式进行转化处理
-
迪米特法则 Law of Demeter
定义:一个对象应该对其他对象有最少的了解
解释:一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心
好处:类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。其要求的结果就是产生了大量的中转或跳转类,导致系统的复杂性提高,同时也为维护带来了难度
-
开放封闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
解释:软件实体应该通过扩展来实现变化
好处:开闭原则对测试的影响;提高复用性;提高可维护性;面向对象开发的要求
-
根据目的分,可分为:创建型、结构型和行为型
-
创建型用于创建对象
单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式
-
结构型用于处理类或对象组合
适配器模式、桥接模式、外观模式、组合模式、装饰者模式、享元模式、代理模式
-
行为型用于类或对象之间怎样交互、怎样分配职责
扩展型:迭代器模式、访问者模式
命令模式、中介者模式、
责任链模式、备忘录模式、观察者模式、解释器模式、
模板方法模式、策略模式、状态模式
-
-
根据范围分,可分为:类模式和对象模式
- 类模式处理类与子类的关系,这种关系在编译时确认下来,属于静态
- 对象模式处理对象间的关系,它们之间的关系在程序运行时确定,属于动态