论坛首页 Java企业应用论坛

依赖注入原理

浏览 10301 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2006-10-16  
依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给有构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。
   发表时间:2006-10-16  
对象间相互引用(即在对象中的某个方法中new一个其它对象)这应该也是一种对象之间的依赖关系的实现方式阿。
0 请登录后投票
   发表时间:2006-10-16  
你说的这些不是什么原理吧,按我的理解反射机制才是原理,你说的是依赖方式
0 请登录后投票
   发表时间:2006-10-17  
同意楼上的!
0 请登录后投票
   发表时间:2006-10-17  
其实本质是把硬编码的类之间关系以配置文件的形式来规范(反射机制实现).
0 请登录后投票
   发表时间:2006-10-17  
依赖注入背后的基本原理是spring官方参考文档上面说的。。。
官方参考(中文翻译):
   依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也是控制反转(Inversion of Control, IoC)名字的由来。

并不是讨论上面所说的是不是依赖注入的基本原理问题,而是上面所说的对象间依赖方式中没有提到对象间相互调用(即在某个对象中new一个另外的类对象)的依赖关系(注意上面的红字描述),
问题: 对象间相互调用关系是不是一种对象间的依赖关系的方式?
0 请登录后投票
   发表时间:2006-10-17  
引用
问题: 对象间相互调用关系是不是一种对象间的依赖关系的方式?

我觉得“对象间相互调用关系”当然是一种依赖关系。
至于搂主的疑问:
引用
对象间相互引用(即在对象中的某个方法中new一个其它对象)这应该也是一种对象之间的依赖关系的实现方式阿

我觉得这种在方法中new一个对象,然后形成调用关系,在大多数情况下是不雅的(少数必要情况我还没有遇到过),原因有下面几处:

1、对象间依赖关系构成分散,不宜维护
这种在方法中new一个对象,缺乏统一的管理和控制,如果用这种方式,依赖构成可能分散在程序的各个角落,日后程序可读性和维护性将受到影响;

2、可能会带来频繁创建对象的损失
直接在方法中new对象,每一次方法调用,都需要一次对象构造过程;

不知道有没有正确理解搂主的意思
0 请登录后投票
   发表时间:2006-10-18  
引用
我觉得这种在方法中new一个对象,然后形成调用关系,在大多数情况下是不雅的(少数必要情况我还没有遇到过),原因有下面几处:

1、对象间依赖关系构成分散,不宜维护
这种在方法中new一个对象,缺乏统一的管理和控制,如果用这种方式,依赖构成可能分散在程序的各个角落,日后程序可读性和维护性将受到影响;

2、可能会带来频繁创建对象的损失
直接在方法中new对象,每一次方法调用,都需要一次对象构造过程;

不知道有没有正确理解搂主的意思


我的意思是:我认为对象间的相互调用也是对象间的依赖关系的一种实现方式,但spring文档里面却说: 对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性,让我不理解。
  现在明白了,感觉这里所说的依赖注入背后的基本原理应该是Spring依赖注入的实现方式,即Spring的依赖注入是通过构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性的方式来实现。不知道这样理解对不对。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics