1.依赖倒置原则(Dependence Inversion Principle DIP原则)
面向接口编程,依赖倒置原则可以减少类之间的耦合性,提高系统的稳定性;降低并行开发引起的风险。
(1)定义:A.高层模块不应该依赖低层模块 B.抽象不应该依赖细节 C.细节依赖抽象。
(2)表现为:A.模块间的依赖通过抽象发生,实现类间不发生直接的依赖关系,其依赖关系通过接口或者抽象类产生;B.接口或抽象类不依赖于实现类 C.实现类依赖于接口或者抽象类。
(3)依赖的三种写法:依赖是可以传递的,只要做到抽象依赖,即使是多层的依赖也没关系,
A.构造函数传递依赖对象 B.Setter方法传递依赖对象 C.接口方法中传入依赖对象。
(4)最佳实践:A.每个类尽量都有接口或者抽象类 B.变量的表面类型尽量是接口或者抽象类 C.不从具体类派生类 D.尽量不覆写基类的方法,只实现
2.接口隔离原则( Interface Segregation Principle ISP原则 )
尽量将其实现类中没有用到的方法分离出去,提高内聚(尽量少的方法做尽量多的事)。类间的依赖关系应该建立在最小的接口上,接口要高内聚,高内聚就是提高接口、类、模块的处理能力,减少对外交互。
3.职责单一原则(Single Responsibility Principle SRP原则)
一个方法处理的业务如果有存在业务扩散的风险,应将其拆分到不扩散为止。单一职责原则指的是应该有且仅有一个原因引起类的变更。
4.里式替换原则(Liskov Substitution Principle LSP原则)
扩展类不要重写基类已经实现的方法。子类可以扩展父类的功能,但不能改变父类原有的功能。
5.迪米特法则(Law of Demter LoD)
又叫最少知道原则(Least Knowledge Principle LKP),相依赖的类应尽量少知其调用类的内部结构
6.开闭原则
开放扩展,关闭修改