单一职责原则
一个类只负责一项职责
里式替换原则
子类能够替换父类对象,而程序逻辑不变
- 如果逻辑不一致就另外加个方法
- 如果要多态,就将父类该方法改为抽象
总结:尽量不要从可实例化的父类中继承,而是要适用基于抽象类和接口的继承
依赖倒置原则
高层模块不应该依赖低层模块,二者都应该依赖其抽象
例子,人读书,传入书的实现,有一天需求变动,读报纸,不应该不断修改人这个类,可以开放人读读物的接口,书和报纸都实现读物接口
接口隔离原则
客户端不应该依赖它不需要的接口,一个类对于另外一个类的依赖应该建立在最小接口上
迪米特法则
一个对象应该对其它对象保持最少的了解
例子,父子公司,现要获取公司所有人的编号,4个对象,父公司,子公司,父员工,子员工,父公司可直接通过子公司打印员工编号,而不需要知道子员工具体信息
开闭原则
一个软件实体如类、模块、函数应该对扩展开放,对修改关闭