我似乎不了解工厂方法和抽象工厂方法之间的基本区别。解释与苹果产品的情况

时间:2015-07-06 02:40:47

标签: c++ design-patterns

我在前面的问题中也谈到了抽象工厂和工厂方法之间的区别。假设,我有苹果工厂,生产3种不同的苹果产品,iphone,ipod和ipad。这三种产品的规格也有所不同......但可能会有一些相似之处。应该使用哪种设计模式。

任何帮助表示赞赏。三江源

2 个答案:

答案 0 :(得分:1)

如果您希望有一个工厂函数将某种AppleProduct*返回到IPhoneIPodIPad的实例,那么这将构成工厂方法模式

如果您想要“视网膜”级显示设备和非视网膜设备的不同工厂功能,您的程序可能首先从视网膜和非视网膜工厂中选择具体的工厂方法,然后从摘要访问该混凝土工厂工厂界面。这有效地为您提供了一些工厂方式,因此您对视网膜或非视网膜产品使用它的方式相同,但可以决定一次处理哪一组产品。与上面简单直接使用工厂方法模式相比,这种模态是一种非常罕见的要求。

答案 1 :(得分:0)

这2种模式实际上并不相容。工厂模式表示调用者不知道对象的实现(只是接口)。抽象工厂模式表明,如果所需的对象遵循层次结构,则工厂遵循类似的"层次结构

因此,在您的示例中,您可以应用抽象工厂模式。您有一个包含3个子类的AbstractAppleProduct类和一个包含3个其他子类的AbstractAppleProductFactory。