原始定义:
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象;
- 抽象不应该依赖细节(实现类);
- 细节应该依赖抽象。
依赖倒置原则在java语言中的体现:
- 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;
- 接口或抽象类不依赖于实现类;
- 实现类依赖接口或抽象类
依赖的三种写法:
- 构造函数传递依赖对象(构造函数注入)
- Setter方法传递依赖对象(setter依赖注入)
- 接口声明依赖对象(接口注入)
使用原则:依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合,我们怎么在项目中使用这个规则呢?只要遵循以下的几个规则就可以:
- 每个类尽量都有接口或抽象类,或者抽象类和接口两者都具备
- 变量的表面类型尽量是接口或者是抽象类
- 任何类都不应该从具体类派生(只要不超过两层的继承是可以忍受的)
- 尽量不要复写基类的方法
- 结合里氏替换原则使用
文章链接 https://fangzongzhou.github.io/2021/02/14/计算机/设计模式/设计原则/依赖倒置原则/