一、单一职责原则(SRP)
1、概念:一个类只完成一个职责或者功能
2、作用:提高类的内聚性,实现代码的高内聚低耦合。
3、不满足的情况:
- 类中代码行数、函数、属性过多
- 类依赖的其它类过多
- 私有方法过多
- 类中的大量方法都是集中操作类中的几个属性
二、开闭原则(OCP)
1、概念:对拓展开放,对修改关闭。以最小的修改代码代价来完成新功能的开发。
2、作用:新老逻辑解耦,需求发生改变不会影响老业务的逻辑,提供代码的稳定性和拓展性。
3、提高代码拓展性的方式:多态、依赖注入、面向接口编程。
三、里氏替换原则(LSP)
1、概念:子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变以及正确性不被破坏。
2、作用:为良好的继承定义一个规范,降低程序出错的可能性。
四、接口隔离原则(ISP)
1、概念:一个类对另一个类的依赖应该建立在最小的接口上,要为各个类建立它们需要的专用接口,不要建立一个庞大的接口,供其它类调用。
2、作用:减少代码的冗余。
3、与单一职责原则的区别:单一职责主要是约束类中程序实现的细节,接口隔离原则主要约束接口,针对抽象和程序整体框架的构建。
五、依赖倒置原则(DIP)
1、概念:高层模块不应该依赖底层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
2、作用:减少类间的耦合。降低并行开发引起的风险。
六、迪米特法则(LKP)
1、概念:不应有直接依赖关系的类之间,不要有依赖:有依赖的类之间尽量只依赖必要的接口。
2、作用:两个软件实体之间无须直接通信,那么就不应该发生直接的调用关系,可以通过第三方转发该调用,降低程序的耦合度。
3、使用注意:过度使用迪米特法则会产生大量中介类,使用时要慎重考虑。