Spring 学习日记(2009/09/04) - DI的优越性

DI的优越性可以体现在以下几个方面:

 

1)大大减少了"胶水"代码.
"胶水"代码指的是将系统各组件粘合在一起的代码,常见的例子包括简单的使用new操作符的对象实例化,复杂的基于JNDI查询的对象创建, 也可以是远程对象调用等.在使用DI的程序中,这些"胶水"代码都可由配置文件来替代.

 

2)依赖组件的外部化.
在使用DI的程序中,开发者使用DI配置文件来控制系统组件的创建和实例化,我们只需改变DI配置文件, 无需重新编译代码就可以改变某个组件的初始化属性.或者其具体的的实现(比如将基于MySQL的DAO替换为基于ORACLE的DAO).

 

3)依赖组件的统一管理
在传统的应用开发中,当需要使用某个组件时,我们就创建其实例,创建一个组件实例的代码可能出现在程序中多个不同的地方,这就增加了代码维护的难度. 通过使用DI,我们就有了一个统一和集中的环境来进行组件实例化的管理,从而减少了代码量,也避免了代码维护的问题.

 

4)提高系统可测试度
在进行系统单元测试时,我们经常需要使用桩模块或是mock实现来驱动测试,使用DI可以非常简便地实现桩模块和实际实现之间的替换,从而减少了测试设计和实现的难度.

 

5)帮助优化系统设计
使用DI的系统的一个特定是大量使用Interface,在典型的基于植入的系统设计中,主要的组件必然是定义为Interface,而其具体实现的选择和组件之间的粘合则由DI容器来控制和管理.这使得开发者可以更多地专注于应用逻辑本身.

 

DI的缺点
DI的主要缺点在于对于不熟悉DI概念和技术的开发者而言,理解和掌握一个使用DI的系统比较困难,主要体现在不容易理清系统组件之间的粘合关系,也不容易确定某个组件的具体实现.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值