如何选择获取依赖关系的方法?

bra*_*ter 4 java dependency-injection static-factory

我已经看到了至少三种在Java对象中获取依赖关系的方法,而没有将对象耦合到依赖项的创建;

依赖注入 - 一些框架基于外部配置将所需对象注入另一个对象,例如:Spring托管bean

依赖查找 - 类在某种目录服务中查找必需的依赖项,例如:Java EE容器中的JNDI查找

静态工厂 - 全局范围内的对象按需提供实例 - 标准Java SE API似乎充满了这些,例如:java.util.Logger.getLogger(name),java.util.Calendar.getInstance()

您可以提供哪种指导最适合某种情况?

duf*_*ymo 6

我更喜欢依赖注入,因为对象不需要知道它如何获取它所需的引用.

依赖关系查找仍然需要对象了解查找服务及其URL.

静态工厂与查找服务类似.