Login
网站首页 > 文章中心 > 其它

php依赖注入的含义_依赖注入(DI)和控制反转的含义相同

作者:小编 更新时间:2023-08-16 16:36:16 浏览量:370人看过

讲讲什么是依赖注入以及给我们的项目开发带来了什么好处

依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念.具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例.但在Spring里,创建被调用者的工作不再由调用者来完成,所以呢称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成,然后注入调用者,所以呢也称为依赖注入.

不管是依赖注入,还是控制反转,都说明Spring采用动态、灵活的方式来管理各种对象.对象与对象之间的具体实现互相透明.在理解依赖注入之前,看如下这个问题在各种社会形态里如何解决:一个人(Java实例,调用者)需要一把斧子(Java实例,被调用者).

(1)原始社会里,几乎没有社会分工.需要斧子的人(调用者)只能自己去磨一把斧子(被调用者).对应的情形为:Java程序里的调用者自己创建被调用者.

第一种情况下,Java实例的调用者创建被调用的Java实例,必然要求被调用的Java类出现在调用者的代码里.无法实现二者之间的松耦合.

第二种情况下,调用者无须关心被调用者具体实现过程,只需要找到符合某种标准(接口)的实例,即可使用.此时调用的代码面向接口编程,可以让调用者和被调用者解耦,这也是工厂模式大量使用的原因.但调用者需要自己定位工厂,调用者与特定工厂耦合在一起.

第三种情况下,调用者无须自己定位工厂,程序运行到需要被调用者时,系统自动提供被调用者实例.事实上,调用者和被调用者都处于Spring的管理下,二者之间的依赖关系由Spring提供.

怎么能通俗易通的了解php中的反射和依赖注入这两个概念

除非你去开发类似ZendFramework, ThinkPHP, CakePHP之类的框架,几乎没有机会用到这个.

这是很底层的东西,尤其是依赖注入这种东西的应用场景就是辅助开发,选型的框架支持依赖注入就行了,没必要自己实现.而反射这个东西也差不多,在业务逻辑中我从来没遇到过必须要靠反射解决的问题,同样也是框架才用到.

依赖注入是怎么回事

依赖注入和控制反转是同义词,已合并.控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题. 控制反转还有一个名字叫做依赖注入(Dependency Injection).简称DI.

起源

IOC关注服务(或应用程序部件)是如何定义的以及他们应该如何定位他们依赖的其它服务.通常,通过一个容器或定位框架来获得定义和定位的分离,容器或定位框架负责: 保存可用服务的集合 提供一种方式将各种部件与它们依赖的服务绑定在一起 为应用程序代码提供一种方式来请求已配置的对象(例如,一个所有依赖都满足的对象), 这种方式可以确保该对象需要的所有相关的服务都可用.

IoC是一个很大的概念,可以用不同的方式实现.其主要形式有两种: ◇依赖查找:容器提供回调接口和上下文条件给组件.EJB和Apache Avalon 都使用这种方式.这样一来,组建就必须使用容器提供的API来查找资源和协作对象,仅有的控制反转只体现在那些回调方法上(也就是上面所说的 类型1):容器将调用这些回调方法,从而让应用代码获得相关资源. ◇依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系.容器全权负责的组建的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象.通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造子注入(Constructor Injection)

以上就是土嘎嘎小编为大家整理的php依赖注入的含义相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章