什么是依赖注入
作者:youngxs
转载:www.jianshu.com/p/31b299bf04d8
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。
实例:Class A 中用到了 Class B 的对象 b,一般情况下,需要在 A 的代码中显式的 new 一个 B 的对象。采用依赖注入技术之后,A 的代码只需要定义一个私有的 B 对象,不需要直接 new 来获得这个对象,而是通过相关的容器控制程序来将 B 对象在外部 new 出来并注入到 A 类里的引用中。这样做有什么好处呢?
解释:假如现在有 N 多个类,需要用到 Class B, 那就需要在类里面实例化 N 多次,这样对于后期的维护和管理都是不方便的,如果后期需求发生改变,那更改量有大很多。
依赖注入的具体实现:
依赖注入代码
上面代码中的就是依赖注入,现在又有一个问题,假如,现在类 b 中的 b 方法现在改名为 c 了,那 a 类里面的 a 方法中,就要将 b 类中调用的 b 方法改成 c 方法。那依旧涉及到那个问题,如果有 N 多个类要用到 B 类呢?那需要做的也是去 N 多个类中不断得去改,这样对后期得维护,需求更改都是要花费很大的成本。
因此,PHP 中有一个接口类的说法,接口类:
PHP 接口(interface)的特点
1、接口的方法必须是公开的。
2、接口的方法默认是抽象的,所以不在方法名前面加 abstract。
3、接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。
4、类可以实现多个接口(相当于把多个功能集于一身,如手机实现了小灵通、MP3、MP4 的功能)
5、接口也可以继承接口。
不多做解释,直接贴代码:
图中可以看到,b 类是一个接口类,c,d 继承了 b 类,接口类的具体规则,则可以自己百度一下,代码中,我们延续了,第一图的代码做为修改,把普通类,改为接口类来实现依赖注入,就能解决那个遗留的问题,当依赖注入的类中的方法,改变了,那我们需要做的就是,在原有的类中,创建一个子类,接着写上相同得方法,然后在方法中写上需要的内容和逻辑就行了,当需要得时候,直接实例化,然后注入到需要的类中就行,哪怕是那些类中原有存在的方法都不需要更改。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: