依赖倒置原则
First Post:
Last Update:
Last Update:
依赖倒置原则
依赖倒置原则说的是:
高层模块不应该依赖低层模块,两个都应该依赖于抽象。
抽象不应该依赖细节,细节应该依赖于抽象。
就是说,要针对接口编程,不要对实现编程。
依赖倒置其实可以说是面向对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中的所有依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之就是过程化的设计。
只要接口是稳定的,那么任何一个的更改都不用担心受到影响,这就使得无论高层模块还是低层模块都可以很容易地被复用。
做项目的时候,通常需要访问数据库,为了使代码能够重用,可以用一个DatabaseUtil类来装关于数据库的各种操作,然后再根据业务逻辑调用其中的各种方法来操作数据库。可以想到,业务逻辑层依赖于数据库操作层(高层依赖于低层),如果要做新项目的时候,发现业务逻辑的高层模块基本是一样的,但却要使用另外的数据库,我们想要复用业务逻辑层,但是却发现了窘境:这些业务逻辑都和低层绑定在一起,没办法复用这些模块。
如果想要复用这些模块,就需要类似实现像电脑cpu,内存,硬盘那样在主板上即插即用的接口*。主板坏了,会影响其他部件的使用,但是单一个内存坏了,不应该影响到其他部件的使用。提供统一的接口,才是让高层模块和低层模块都能复用的真理…
只要行为是一致的,就可以通过接口的引用(父)来装载子类(实现该接口的类)。只要实例化对应的子类,不需要修改接口方法的调用。这样就实现了对高层模块的复用。