当我阅读Head first design pattern一书时,我发现抽象工厂一章中的“抽象工厂依赖于对象组合:对象创建是在工厂接口中公开的方法中实现的”。我的疑问是抽象工厂如何依赖对象组合?
如果我将在维基百科中举个例子,那么 GUIFactory 是一个接口,WinFactory 实现了 GUIFactory。然后抽象工厂如何使用组合。提前致谢。
当我阅读Head first design pattern一书时,我发现抽象工厂一章中的“抽象工厂依赖于对象组合:对象创建是在工厂接口中公开的方法中实现的”。我的疑问是抽象工厂如何依赖对象组合?
如果我将在维基百科中举个例子,那么 GUIFactory 是一个接口,WinFactory 实现了 GUIFactory。然后抽象工厂如何使用组合。提前致谢。
我认为它们的意思是抽象工厂为客户描述了组合,并且在这个意义上依赖于对象组合。
再举一个例子,抽象工厂BodyCreator
定义了方法createArm
,createLeg
等等createHead
。具体工厂可以是DinosaurCreator
和HumanCreator
。它们产生所有元素来创建一个复合“主体”,以便客户端可以调用这些不同的方法来组合一个,但它不需要知道它究竟是什么类型的主体。就像在 wikipedia 示例中 GUIFactory 描述了 GUI 由哪些元素组成。
为了更清楚,他们应该添加更多方法 IMO:
CheckBox createCheckBox()
等TextField createTextField()
。
但是,是的,也许“relies”不是最好的选择。
恕我直言,一个笼统的声明,比如
抽象工厂依赖对象组合
不准确。在这种情况下,我的感觉是,object composition
在定义Abstract Factory
.
Wikipedia 的对象组合条目:http ://en.wikipedia.org/wiki/Object_composition 在以下情况下很有帮助:
在计算机科学中,对象组合 [...] 是一种将简单对象或数据类型组合成更复杂对象的方法。
是否有任何迹象表明抽象工厂/工厂/工厂方法不能返回简单的对象或数据类型?
这是一个反问(我认为)。我什么也找不到。