单一职责原则
就一个类而言,应该仅有一个引起它变化的原因,通俗点讲,一个类只负责一项职责。
开放-封闭原则
一个软件实体如类、模块和函数等应该可以扩展,不能修改。也就是对于扩展是开放的,对于更改是封闭的。
依赖倒置原则
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 也就是要面向接口编程,不要面向实现编程。
里氏替换原则
所有引用基类(父类)的地方必需能够透明地使用子类对象。一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化. 里氏代换原则要求不能破坏继承体系,具体表现在: 1.子类应该实现父类的所有抽象方法,不要覆盖父类的非抽象方法。 2.子类可以增加自己特有的方法。 3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 4. 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
接口隔离原则
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
迪米特法则
最少知道原则,是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成影响,也就是说,信息的隐藏促进了软件的复用。