美文网首页
什么是依赖注入

什么是依赖注入

作者: 非资深技术人 | 来源:发表于2020-11-12 14:35 被阅读0次

    把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。

    实例: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类,接口类的具体规则,则可以自己百度一下,代码中,我们延续了,第一图的代码做为修改,把普通类,改为接口类来实现依赖注入,就能解决那个遗留的问题,当依赖注入的类中的方法,改变了,那我们需要做的就是,在原有的类中,创建一个子类,接着写上相同得方法,然后在方法中写上需要的内容和逻辑就行了,当需要得时候,直接实例化,然后注入到需要的类中就行,哪怕是那些类中原有存在的方法都不需要更改。

    作者:youngxs
    链接:https://www.jianshu.com/p/31b299bf04d8
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:什么是依赖注入

          本文链接:https://www.haomeiwen.com/subject/kahpbktx.html