1.单一责任原则:一个对象应该只包含一个单一的责任,责任完全封装在一个类中。单一责任原则是实现高内聚、低耦合的指导原则。这是最简单但最难运用的原理。设计师需要发现类的不同职责,并把它们分开。
2.开放封闭原则:软件实体应该对扩展开放,对修改封闭。指软件实体应尽量扩展而不修改原代码。
3.里克特替换原则:所有引用基类的地方必须能够透明地使用它的子类的对象。Richter的替换原理表明,如果一个基类对象在软件中被它的子类对象替换,程序就不会产生任何错误和异常,否则就不成立。应用Richter替换原理时,父类应该设计成抽象类或接口,子类应该继承父类或实现父类接口,实现父类中声明的方法。
4.依赖反转原则:高层模块不应该依赖底层模块,而应该依赖抽象。抽象不要依赖细节,细节要依赖抽象。依赖反转的原则要求为接口编程,而不是为实现编程。
5.接口隔离原则:客户端不应该依赖那些它不需要的接口。使用接口隔离原则时,要注意控制接口的粒度,接口不能太小。太小会导致系统中接口泛滥,不利于维护;接口不能太大,太大的接口会违反接口隔离原则,灵活性差,使用不方便。
6.组合重用原则:首先要使用对象组合,而不是继承,达到重用的目的。一般来说,如果两个类的关系是Has-A,就用组合或者聚合,如果是Is-A,就用继承。
7.迪米特里法则——也被称为最少知识原则:每个软件单元对其他单元的知识都是最少的,并且仅限于那些与自己单元密切相关的软件单元。