对控制反转的理解

1.        起源

马丁·富勒:哪些方面的控制被反转了?

马丁·富勒:依赖对象的获得被反转了。

 

2.        什么是反转

依赖对象:大多数应用程序都是由两个或是更多的类通过彼此的合作来实现业务逻辑,这使得每个对象都需要与其合作的对象的引用。例如Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。而是用控制反转,则A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。

 

3.        怎么反转?

实现控制反转主要有两种方式:依赖注入和依赖查找。两者的区别在于,前者是被动的接收对象,在类A的实例创建过程中即创建了依赖的B对象,通过类型或名称来判断将不同的对象注入到不同的数属性中,而后者是主动索取响应名称的对象,获得依赖对象的时间也可以在代码中自由控制。

依赖注入:

基于接口。实现特定接口以供外部容器注入所依赖类型的对象。

基于 set 方法。实现特定属性的publicset方法,来让外部容器调用传入所依赖类型的对象。

基于构造函数。实现特定参数的构造函数,在新建对象时传入所依赖类型的对象。

依赖查找:在需要的时候通过调用框架提供的方法来获取对象,获取时需要提供相关的配置文件路径、key等信息来确定获取对象的状态

 

4.        为什么反转?

如果这个获取过程要靠自身实现,那么这将导致代码高度耦合并且难以维护和调试。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值