1、开闭原则
即软件中的对象对于扩展开放,对于修改封闭
在开发软件的过程中,当需求改变的时候,尽量通过扩展软件实体的行为来实现变化,而不是修改源代码。这就要求在软件的设计之初就将公共部分抽象出来。
2、里氏替换原则
即继承必须确保超类所拥有的性质在子类中仍然成立
子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。在做系统设计的时候,经常会设计接口或者抽象类,然后由子类来实现抽象方法。
子类可以增加自己独有的方法。在继承父类的属性和方法时,子类可以在父类的基础上扩展自己的功能,但子类尽量不要重写父类的方法,而是应该另写一个方法。
3、依赖倒置原则
即要求面向接口编程,而非是具体实现
在设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。即让用户程序依赖于抽象,实现的细节也依赖于抽象,即使细节不断变动,只要抽象不变客户程序就不需要变化。以此降低客户程序与实现细节之间的耦合度。
4、单一职责原则
即控制类的粒度大小,将对象解耦、提高其内聚性
就一个类而言,应该仅有一个引起它变化的原因,应该只有一个职责。
如果一个类承担的职责过多,就等于把这些职责耦合在一起了,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。
5、接口隔离原则
即要为各个类建立它们需要的