首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >工厂来创建工厂?

工厂来创建工厂?
EN

Stack Overflow用户
提问于 2017-04-18 19:45:40
回答 1查看 210关注 0票数 0

我指的是GoF 抽象工厂Factory方法模式。我理解它们的目的,但困扰我的是,这两种模式都忽略了关于客户机如何获得“工厂对象”实例的讨论。例如,在下面的抽象工厂模式中,讨论假定其他一些框架或驱动程序代码已经构建了层次结构,并且Application实例已经保存了GUIFactory的一个实例( WinFactoryOSXFactory)。

(资料来源:模式)

类似的观点也适用于工厂方法模式。讨论假设外部的其他东西已经实例化了MagicMazeGame。

(资料来源:模式)

为什么要烦我?因为我们需要另一种模式来构造这些对象层次结构,这个模式是许多人在说Factory时实际上所指的模式。基本上,工厂模式如下:

(来源:领域驱动设计,Eric Evans 2003)

在我看来,这是一个不同于抽象工厂Factory方法的模式。客户端指定需求,工厂根据需求以及配置和上下文创建对象。作为一个假设的例子,客户机指定它需要一个抽象的Connection对象,工厂根据系统中配置的数据库驱动程序创建一个MySQLConnectionOracleConnection

所以,我的问题是:

  • 有我描述的最后一个模式的术语吗?(我试过研究,但在GoF中,工厂一词总是指工厂模式)
  • 创建工厂的工厂应该叫什么?GUIFactoryFactory
  • 还是我完全错了?

我知道这个问题只是问如何命名,但是使用一种无处不在的语言(源代码:域驱动设计,Evans 2003 )。在我看来,在软件工程中)也是非常重要的。

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 01:13:32

用于构造对象层次结构的模式称为成分根。此模式适用于任何用于实现接口的具体对象的构造,包括用于实现工厂接口的具体工厂。

复合根通常与依赖项注入一起使用,因此在2009年被问及如何“重构”GoF书时,请注意Erich Gamma GoF添加依赖注入是很有趣的。

Eric Evans的图表似乎是一个体系结构视图,其中使用了术语工厂作为任何工厂模式的占位符。换句话说,它可以表示抽象工厂、工厂方法或GoF之外的其他工厂模式。在架构级别上,特定的工厂模式并不重要,只是客户端将实例化逻辑延迟到其他组件的想法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43480913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档