依赖倒转原则
依赖倒转原则:
1、高层模块不应该依赖低层模块,两个都应该依赖抽象。
2、抽象不应该依赖细节,细节应该依赖抽象。
就是要针对接口编程,不要对实现编程,如果不管是高层模块还是低层模块,它们都依赖于抽象,具体一点就是接口或抽象类,只要接口是稳定的,那么任何一个的更改都不用担心其他的收到影响,这就使得无论高层模块还是底层模块都可以很容易的被复用。
在编程中的具体体现:
1、模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
2、接口或抽象类,不依赖于实现类。
3、实现类依赖接口或抽象类。
依赖倒转原则——可以说是面向对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程,而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之,就是过程化的设计。
就是高层模块可以更改,底层模块也可以更改,但是它们都是依赖于接口,也就是抽象编程的,无论怎么改动都可以链接使用,都可以被调用,这样就可以很容易的被复用。
举例说明:拿电脑主机来说,主板、cpu、内存条,硬盘等等,他们都是依赖于接口的,并不是依赖于具体的某个品牌,我们可以换主板,但是其他的比如内存条,cpu,硬盘等等,都不需要更换,我们也可以更换内存,或者是cpu、硬盘等其中的任何一个部件,但是也不需要更换主板。
依赖的三种写法:
依赖是可以传递的,比如A对象依赖B对象,B对象又依赖C对象,C对象又依赖于D对象……等等,只要做到抽象依赖,即使是多层依赖也无所畏惧。
对象的依赖通过三种方式来进行:
1、构造函数传递依赖对象。
2、Setter方法传递依赖对象。
3、接口声明依赖对象,也叫做接口注入。
使用依赖倒转原则,应遵循的规则:
1、每个类尽量都有接口或抽象类,或者抽象类和接口两者都具备,这是依赖倒置原则的基本要求,接口和抽象类都是属于抽象的,有了抽象才可能依赖倒置。
2、变量的表明类型,尽量是接口或者是抽象类。
3、任何类都不应该从具体类派生。
4、尽量不要覆写,基类的方法。
5、结合里氏代换原则使用。