3

当我阅读Head first design pattern一书时,我发现抽象工厂一章中的“抽象工厂依赖于对象组合:对象创建是在工厂接口中公开的方法中实现的”。我的疑问是抽象工厂如何依赖对象组合?

如果我将在维基百科中举个例子,那么 GUIFactory 是一个接口,WinFactory 实现了 GUIFactory。然后抽象工厂如何使用组合。提前致谢。

4

2 回答 2

3

我认为它们的意思是抽象工厂为客户描述了组合,并且在这个意义上依赖于对象组合。

再举一个例子,抽象工厂BodyCreator定义了方法createArmcreateLeg等等createHead。具体工厂可以是DinosaurCreatorHumanCreator。它们产生所有元素来创建一个复合“主体”,以便客户端可以调用这些不同的方法来组合一个,但它不需要知道它究竟什么类型的主体。就像在 wikipedia 示例中 GUIFactory 描述了 GUI 由哪些元素组成。

为了更清楚,他们应该添加更多方法 IMO: CheckBox createCheckBox()TextField createTextField()

但是,是的,也许“relies”不是最好的选择。

于 2013-04-22T13:04:21.837 回答
1

恕我直言,一个笼统的声明,比如

抽象工厂依赖对象组合

不准确。在这种情况下,我的感觉是,object composition在定义Abstract Factory.

Wikipedia 的对象组合条目:http ://en.wikipedia.org/wiki/Object_composition 在以下情况下很有帮助:

在计算机科学中,对象组合 [...] 是一种将简单对象或数据类型组合成更复杂对象的方法。

是否有任何迹象表明抽象工厂/工厂/工厂方法不能返回简单的对象或数据类型?

这是一个反问(我认为)。我什么也找不到。

于 2013-04-16T17:12:11.787 回答