【发布时间】:2011-03-31 18:00:06
【问题描述】:
我已经看到了至少三种在 Java 对象中获取依赖项而不将对象与依赖项的创建耦合的方法;
依赖注入 - 某些框架基于外部配置将所需对象注入到另一个对象中,例如:Spring 托管 bean
依赖查找 - 类在某种目录服务中查找所需的依赖项,例如:Java EE 容器中的 JNDI 查找
静态工厂 - 全局范围内的对象按需提供实例 - 标准 Java SE API 似乎充斥着这些,例如:java.util.Logger.getLogger(name)、java.util.Calendar.getInstance()
对于哪种情况最适合您提供哪些指导?
【问题讨论】:
-
澄清一下,依赖注入并不需要框架和外部配置,你可以编写一个例程来创建你想要的实例并在需要的地方注入它们。当然,如果您需要更改任何内容,则需要重新编译(这就是框架和外部配置的来源)。
-
我强烈建议您在 SO 中搜索相关的问题和答案——这是一个老生常谈的领域。例如,查看Dependency Injection & Singleton Design Pattern,或访问ploeh blog。
-
@Jeff Sternal 感谢您提供问题链接,我错过了那个!
标签: java dependency-injection static-factory