重新认识IOC

你真的认识IOC吗?重新认识IOC

什么是IOC

IOC是Inversion of Control的缩写,大多数书籍翻译成“控制反转”。控制反转的意思是说控制权被反转了:本来由对象自己去控制,现在交给容器控制。(以前创建对象时是自己通过new的方式主动去创建,但是由于控制器被反转交给容器后,某个对象需要另一个对象时不需要通过去new的主动创建对象,而是被动的等待容器为它创建对象) 这个也称之为好莱坞原则:好莱坞原则:不要来打电话给我(导演),我会打电话给你(演员)
这里的“我”指的是资源,你就是应用系统(模块)在1983年,Richard E. Sweet 在《The Mesa Programming Environment》中提出“Hollywood Principle”(好莱坞原则)

而DI(Dependency Injection),即依赖注入,2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是哪些方面的控制被反转了呢?“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。

依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。

IoC主要实现策略

  • Using a service locator pattern 服务定位模式(JavaEE定义的一种模式,获取DataSource这些东西)
  • Using dependency injection,for example 依赖注入
    • Constructor injection 构造器注入
    • parameter injection 参数注入
    • Setter injection set注入
    • Interface injection 接口注入
  • Using a contextualized lookup 上下文依赖查询(有JavaBeans之类的来实现)
  • Using template method design pattern 模版方法模式
  • Using strategy design pattern 策略模式

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

IoC容器的职责

  • 依赖处理
    • 依赖查找
    • 依赖注入
  • 生命周期管理
    • 容器
    • 托管的资料
  • 配置
    • 容器
    • 外部化配置
    • 托管的资料
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞数学的小混混

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值