依赖注入

举例

例:人依赖手机打电话>>>
当一个类(Person)对另一个类(Mobile)有依赖时,不在该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个接口(注入口),告诉接口(注入口)容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的服务类(Mobile)的实例。

背景:

随着面向对象分析与设计的发展,核心原则之一就是将变化隔离,使得变化部分发生变化时,不变部分不受影响(这也是OCP的目的)。为了做到这一点,要利用面向对象中的多态性,使用多态性后,客户类不再直接依赖服务类,而是依赖于一个抽象的接口,这样,客户类就不能在内部直接实例化具体的服务类。但是,客户类在运作中又客观需要具体的服务类提供服务,因为接口是不能实例化去提供服务的。
为了解决这个矛盾,开发人员提出了一种模式:客户类定义一个注入口,用于服务类的注入。客户类实例化时,自动实例化服务类,注入到客户类中,从而解决了这个矛盾。

正式定义

由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值