传递依赖关系有三种方式,以上的例子中使用的方法是
接口传递,另外还有两种传递方式:
构造方法传递和
setter方法传递
在实际编程中,我们一般需要做到如下3点:
在实际编程中,我们一般需要做到如下3点:
- 低层模块尽量都要有抽象类或接口,或者两者都有。
- 变量的声明类型尽量是抽象类或接口。
- 使用继承时遵循里氏替换原则。
依赖倒置原则的核心就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。
定义:高层模块不应该依赖于底层模块,两者应该都依赖于 抽象,抽象应该不依赖于细节,细节应该依赖于抽象.
问题描述: 类A直接依赖于类B,假如要修改为类A依赖于类C,则必须通过修改类A的代码来完成,这种情况下,类A一般是高层模块,负责复杂的业务逻辑,类B和类C是底层模块,负责基本的原子操作,如果修改类A,会给程序带来一定的风险.
解决方案: 将类A修改为依赖接口I, 类B和类C各自实现接口I,类A通过接口I与类B类C发生关联,这大大降低修改类A的几率
依赖倒置原则基于这样的一个原则:相对于细节的多变性,抽象的东西要稳定的多,以抽象的基础搭建起来的架构比以细节为基础搭建起来的架构稳定的多
依赖倒置原则的核心思想是面向接口编程,