【发布时间】:2018-04-30 18:35:21
【问题描述】:
根据维基百科
在基于类的编程中,工厂方法模式是一种创建模式,它使用工厂方法来处理创建对象的问题,而不必指定将要创建的对象的确切类。
在依赖注入中(我有 spring 的经验,所以这可能是在那种情况下),我们为使用接口定义的每个类都有变量,并将具体实例化留给 DI 框架。
我是否遗漏了什么,或者这些可以互换使用?
【问题讨论】:
-
Spring中的应用上下文是一个bean工厂,所以我的回答是“是”。当您意识到 DI 需要一个 bean 工厂时,也许微妙之处就出现了,但还有更多(例如前和后 bean 处理器等)
-
@duffymo 是的 Spring 远不止于此,但我只是根据 IoC 和 DI 考虑它,而不是专门从框架的角度考虑它。
-
主要基于意见 - 许多好的问题会根据专家经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。在尝试提出更多问题之前,请阅读What types of questions should I avoid asking?。
-
在构造函数是原始依赖注入并且也称为穷人依赖注入框架的上下文中考虑您的问题,还考虑到每个DI 框架具有 Providers 的概念,它们是 依赖项的工厂,您用于 Inject 用于后期绑定的依赖项,很明显它不是就像你说的那样清晰。
-
工厂方法模式是关于子类能够覆盖一些实例化对象的“创建”方法。依赖注入是关于通过“注入”(在最简单的情况下通过构造函数)替换属性的直接实例化。在我看来,这些想法完全不同。
标签: java design-patterns dependency-injection