依赖倒转原则解释:抽象不应该依赖于细节,细节应该依赖于抽象,说通俗点也就是针对接口编程,不要针对实现编程
. 我们在做开发的时候,要访问数据库,就会把访问数据库的代码写成函数,每次去开发的时候调用这些函数就行了,其实这就叫高层模块依赖低层模块,违反了依赖倒转原则
. 当我们做一个新项目的时候,发现业务逻辑的高层模块都是一样的,但是客户希望换成不同的数据库,这就出问题了,我们希望能再次利用这些高层的业务逻辑模块,但是高层的业务逻辑模块和低层的数据访问模块是绑定的,没有办法复用这些高层模块,就好像电脑里如果CPU,内存,硬盘都需要依赖具体的主板,主板一换,所有的部件就没用了,这是不合理的,反过来,因为CPU对应到具体的某个品牌的主板,那么CPU一换,那就得更换主板了,这也是不合理的,这里的例子就体现了“倒转”两个字的含义
. 不管高层模块还是低层模块,它们应该都依赖与抽象,就是都依赖接口和抽象类,只要接口是稳定的,那么任何一个的更改都不用担心其他的受到影响,这就使得无论高层模块还是低层模块都可以被复用,这也是最好的办法