间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给有构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。
对象间相互引用(即在对象中的某个方法中new一个其它对象)这应该也是一种对象之间的依赖关系的实现方式阿。
你说的这些不是什么原理吧,按我的理解反射机制才是原理,你说的是依赖方式
其实本质是把硬编码的类之间关系以配置文件的形式来规范(反射机制实现).
依赖注入背后的基本原理是spring官方参考文档上面说的。。。
官方参考(中文翻译):
依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也是控制反转(Inversion of Control, IoC)名字的由来。
并不是讨论上面所说的是不是依赖注入的基本原理问题,而是上面所说的对象间依赖方式中没有提到对象间相互调用(即在某个对象中new一个另外的类对象)的依赖关系(注意上面的红字描述),
问题: 对象间相互调用关系是不是一种对象间的依赖关系的方式?
引用
问题: 对象间相互调用关系是不是一种对象间的依赖关系的方式?
我觉得“对象间相互调用关系”当然是一种依赖关系。
至于搂主的疑问:
引用
对象间相互引用(即在对象中的某个方法中new一个其它对象)这应该也是一种对象之间的依赖关系的实现方式阿
我觉得这种在方法中new一个对象,然后形成调用关系,在大多数情况下是不雅的(少数必要情况我还没有遇到过),原因有下面几处:
1、对象间依赖关系构成分散,不宜维护
这种在方法中new一个对象,缺乏统一的管理和控制,如果用这种方式,依赖构成可能分散在程序的各个角落,日后程序可读性和维护性将受到影响;
2、可能会带来频繁创建对象的损失
直接在方法中new对象,每一次方法调用,都需要一次对象构造过程;
不知道有没有正确理解搂主的意思
引用
我觉得这种在方法中new一个对象,然后形成调用关系,在大多数情况下是不雅的(少数必要情况我还没有遇到过),原因有下面几处:
1、对象间依赖关系构成分散,不宜维护
这种在方法中new一个对象,缺乏统一的管理和控制,如果用这种方式,依赖构成可能分散在程序的各个角落,日后程序可读性和维护性将受到影响;
2、可能会带来频繁创建对象的损失
直接在方法中new对象,每一次方法调用,都需要一次对象构造过程;
不知道有没有正确理解搂主的意思
我的意思是:我认为对象间的相互调用也是对象间的依赖关系的一种实现方式,但spring文档里面却说: 对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性,让我不理解。
现在明白了,感觉这里所说的依赖注入背后的基本原理应该是Spring依赖注入的实现方式,即Spring的依赖注入是通过构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性的方式来实现。不知道这样理解对不对。