依赖倒置原则

发布于: 2020 年 06 月 21 日

依赖倒置原则

简单来讲 依赖倒置原则 就是,高阶模块不依赖低阶模块,而是高阶模块与低阶模块共同依赖抽象

什么是高阶模块和低阶模块?

我们知道,程序的执行是依靠入栈和出栈来实现的,栈是先进后出的。我理解的先入栈的可以称为高阶后入栈的相对于先入栈的为低阶模块。

简单来讲,我调你,我就是高阶模块,你就是低阶模块。

什么是依赖?

classA的功能,需要classB的功能支持,那么可以说classA依赖classB。

为什么要依赖倒置

classA依赖classB,通俗来讲,就是我们要在classA内部使classB的对象或方法。但是classB是不受约束的,他是可以自由修改的。比如classB以前提供一个func bb()方法,这个方法被 classA调用了,一段时间后,对classB做了修改,方法名从func bb() 变成了 func bbb(),这时classA的调用就出错了。而修改classB的开发人员并不能感知到这种错误。

这样做的好处是,由高阶模块定义接口,并直接调用接口方法,如果低阶想要被调用,就必须实现高阶定义的接口,如果修改实现接口的方法,编译时就会报错,(一般IDE直接就报错了)从而实现了对依赖的解耦。

依赖倒置原则 是让我们尽量避免直接使用具体类,而多使用抽象和接口

好莱坞原则

(don‘t call us, we‘ll call you)
不要给我们打电话,我们会给你打电话

用我们程序中的场景描述就是:不要调用我,(你需要实现我的接口,)在需要时我会来调用你。

总结

网上说 好莱坞原则依赖倒置原则 的别称,但我感觉两者并不是完全等价的。好莱坞原则更多的是从高阶模块角度对依赖倒置原则的一种表达。

laravel框架的依赖倒置原则应用

我是PHP开发工程师,laravel框架是我们经常用到的后台开发框架,在laravel框架的应用中,我们只需要在controller里写我们的业务逻辑,而框架会通过路由映射直接到到uri对应的controller和method,然后调用之。

用户头像

耕夫

关注

还未添加个人签名 2019.02.11 加入

还未添加个人简介

评论

发布
暂无评论
依赖倒置原则