抽象工厂模式依赖于对象组合?

时间:2013-04-16 16:55:46

标签: java oop design-patterns

当我浏览书籍Head first design pattern时,我发现“抽象工厂依赖于对象组合:对象创建在工厂界面中公开的方法中实现”在抽象工厂章节中。我怀疑这是抽象工厂如何依赖于对象组合?

如果我将采用wikipedia中的示例,则GUIFactory是一个接口,WinFactory实现GUIFactory。然后抽象工厂如何使用组合。提前谢谢。

2 个答案:

答案 0 :(得分:3)

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

再举一个例子,抽象工厂BodyCreator定义方法createArmcreateLegcreateHead等。具体工厂可以是DinosaurCreator和{{ 1}}。它们生成所有元素以创建复合“body”,以便客户端可以调用那些不同的方法来组成一个,但它不需要知道它正是 组成的正文类型。就像在维基百科示例中一样,GUIFactory描述了GUI由哪些元素组成。

为了更清楚,他们应该添加更多方法IMO: HumanCreatorCheckBox createCheckBox()等。

但是,是的,也许'依赖'并不是最好的选择。

答案 1 :(得分:1)

恕我直言,像

这样的一揽子声明
  

抽象工厂依赖对象组合

不准确。在这种情况下,我的感觉是,在定义object composition时,这是对Abstract Factory一词的懒惰或过于广泛的使用。

维基百科的对象组合条目:http://en.wikipedia.org/wiki/Object_composition在此处有用时表示:

  

在计算机科学中,对象组合是一种结合的方式   简单的对象或数据类型为更复杂的对象。

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

这是一个修辞问题(我认为)。我找不到任何东西。