Java的依赖注入(控制反转)
来源:互联网 发布:企业危机网络 编辑:程序博客网 时间:2024/06/06 07:12
转载自:http://blog.csdn.net/xiangzhihong8/article/details/51707776
两个主角“依赖注入”和“控制反转”:
1、二都说的都是同一件事,只是叫法不同。是一个重要的面向对象编程的法则,也是一种设计模式;
2、英文原称:依赖注入,Dependency Injection(DI);
控制反转,Inversion of Control(IoC)。
3、作用:削减计算机程序的耦合问题;
4、为什么叫“控制反转”:创建被调用者的工作不再由调用者来完成,因此称为控制反转。结合Java说,当某个Java实例需要其他Java实例时,系统自动提供一个所需要的实例,无须程序显示的new一个。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。在有控制反转之前,是由调用者负责创建他所依赖的对象;之后,由系统负责创建。
5、为什么叫“依赖注入”:纵观所有的Java应用,它们都是由一些互相协作的对象构成的。我们称这种互相协作的关系为依赖关系。假如A组件调用了B组件的方法,我们可称A组件依赖于B组件。系统创建的实例供调用者调用,也可以看作是系统将创建的实例注入调用者。
6、优点:因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCSI硬盘了)。
7、缺点:1)生成一个对象的步骤变复杂了(事实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观;
(2)对象生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高;
(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。
所谓耦合是指在一个软件结构内不同模块之间互连程度的度量,
而低耦合就是指在设计一个软件时,作为一个完整的软件系统,对于各种模块与模块之间应尽可能的是其独立的存在,让每个模块尽可能的独立完成其特定的功能。
如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
所谓内聚是指一个模块内各个元素彼此结合的紧密程度。而高内聚就是指在一个模块的内部,应该尽可能的让每个元素都紧密的相连。
也就是充分利用每一个元素的功能,各施所能,以最终实现某个功能。
- Java的依赖注入(控制反转)
- Java的依赖注入(控制反转)
- Java的依赖注入(控制反转)
- Java依赖注入(控制反转)
- JAVA框架当中Spring的依赖注入和控制反转
- JAVA框架当中Spring的依赖注入和控制反转
- 依赖注入&控制反转
- 控制反转&依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- Java之控制反转和依赖注入
- HELLO WORLD
- S2-1-1章
- VB-实例-物流配送系统
- scikit-learn点滴
- Eclipse下开发android,The connection to adb is down, and a severe error has occured.提示需要重启adb怎么处理?
- Java的依赖注入(控制反转)
- maven安装与配置
- Android Studio常用插件—— JsonOnlineViewer
- NOIP2007 提高组 复赛 count 统计数字
- 设计模式六大原则之--里氏替代原则(LSP)
- java项目转web
- Best Time to Buy and Sell Stock II
- Combinations
- uml(unified modeling language)用例图、类图、序列图详解