我参考GoF 抽象工厂和工厂方法模式。我理解他们的目的,但是让我感到困惑的是,两种模式都没有讨论客户如何获得“工厂对象”的实例。例如,在下面的抽象工厂模式,讨论假定一些其他的框架或驱动程序代码已经构造的层次结构,并且Application
实例已经持有的GUIFactory
(无论WinFactory
或OSXFactory
)工厂创建工厂?
(源的实例:https://en.wikipedia.org/wiki/Abstract_factory_pattern)
类似的争论还在继续朝着工厂方法模式。讨论假定外面的其他东西已经实例化MagicMazeGame。
(来源:https://en.wikipedia.org/wiki/Factory_method_pattern)
为什么会打扰我?因为我们需要另外一种模式来构建这些对象层次结构,而这种模式是许多人在说工厂时实际上的意思。基本上工厂模式如下:
这是无论从抽象工厂或工厂方法不同的图案,在我看来。客户根据配置和上下文,根据要求以及来指定要求并且工厂创建对象。作为一个假设示例,客户端指定它想要抽象Connection
对象,工厂将创建一个MySQLConnection
或OracleConnection
,具体取决于系统中配置的数据库驱动程序。
所以,我的问题是:
- 是有我所描述的最后一个模式的一个术语? (我试过研究,但工厂一直意味着GoF的工厂模式)
- 创建工厂的工厂应该命名为什么?
GUIFactoryFactory
??? - 还是我完全错了这一切?
我知道这个问题,只是询问如何命名的东西,但使用通用语言(来源:领域驱动设计,Eric Evans的2003年,我完全同意)也是在软件工程中非常重要我的想法是。