单一职责原则 SPR
定义:应该有且仅有一个原因引起类的变更
there should never be more than one reason for a class to change
使用好处
- 类的复杂性降低,实现什么职责都有清晰明确的定义
- 可读性提高
- 可维护性高
- 变更引起的风险降低,变更是必不可少的,但是如果单一职责用的好,修改接口对其他接口无影响,这对系统的扩展维护是有很大好处的。
里氏替换原则
定义:只要父类出现的地方,子类就可以出现,而且替换为子类不会产生任何错误异常,使用者根本不需要知道使用的是子类还是父类,但是返回来就行不行了,子类出现的地方如果冒然替换为父类未必就能适应。
规则:子类必须完全实现父类的方法
总结一句话 —— 就是尽量不要从可实例化的父类中继承,而是要使用基于抽象类和接口的继承。
依赖倒置原则
定义:
- 高层模块不应该依赖于底层模块,两者都应该依赖于其抽象;
- 抽象不应该依赖于实现类
- 实现类依赖接口或抽象类
接口隔离原则
接口方法数量要少,尽量使用多个专门的接口
迪米特法则
最少知识原则,一个对象应该对其他对象有最少的了解。我只知道你的public方法就ok了其他的我一概不管
开闭原则
对外扩展开放,修改关闭,你随便扩展,但是不可以修改。