一、单一职责原则
就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因;
一个合理的类,应该仅有一个引起它变化的原因,即单一职责;
二、开放封闭原则
实现开放封闭原则的关键是抽象;
依据开闭原则,我们尽量不要修改类,只扩展类,但在有些情况下会出现一些比较怪异的状况,这时可以采用几个类进行组合来完成;
将可能发生变化的部分封装成一个对象,封装变化是实现"开闭原则"的一个重要手段,如经常发生变化的状态值,如温度,颜色,积分,排名等等,可以将这些作为独立的属性,如果参数之间有关系,有必要进行抽象。对于行为,如果是基本不变的,则可以直接作为对象的方法,否则考虑抽象或者封装这些行为;
三、Liskov替换原则
保证系统或子系统有良好的扩展性。只有子类能够完全替换父类,才能保证系统或子系统在运行期内识别子类,因而使得系统或子系统有了良好的扩展性。
此原则和“开放封闭原则”的作用有点类似,其实这些面向对象的基本原则就2条:
1:面向接口编程,而不是面向实现;
2:用组合而不主张用继承。
四、依赖倒置原则
描述:
1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。
启发式规则:
1、任何变量都不应该持有一个指向具体类的指针或者引用
2、任何类都不应该从具体类派生(始于抽象,来自具体)
3、任何方法都不应该覆写它的任何基类中的已经实现了的方法
五、接口隔离原则
使用多个专门的接口比使用单一的总接口要好。
一个类对另外一个类的依赖性应当是建立在最小的接口上的。
一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。