2012-04-01 74 views
1

有没有人请让我知道为什么FactoryMethod设计模式被引入?正如我的问题是一样的可以使用工厂模式本身?工厂模式vs FactoryMethod模式

例如,如果我看到工厂模式和FactoryMethod模式之间的差异,工厂模式返回混凝土IMplementation作为FactoryMethod模式返回工厂对象作为其返回类型?

请告诉我为什么要引入FactoryMethod?

+0

http://www.c2.com/cgi/wiki?AbstractFactoryPattern – 2012-04-01 08:53:42

+0

http://c2.com/cgi/wiki?FactoryMethodPattern – 2012-04-01 08:54:10

+0

@MitchWheat是抽象工厂模式是相同的工厂模式? – 2013-03-17 19:43:31

回答

0

正如你可以在Wiki'抽象工厂模式上阅读的那样,这种模式通常使用工厂方法来实现'。

看到这张照片http://upload.wikimedia.org/wikipedia/commons/a/a7/Abstract_factory.svg

设计模式通常/总是彼此相连,这样,他们向我们展示了模式的概念。

关注Lukasz。

+0

AbstractFactory和Factory是否相同? – Pawan 2012-04-01 09:32:56

+0

不完全。在标准的GoF模式中,你没有像工厂模式那样的东西。正如我所看到的工厂模式是抽象工厂概念的一部分,显示在这张图片上,我链接在这里。 http://www.oodesign.com/factory-pattern.html。但除此之外,这个想法几乎是一样的。 – 2012-04-01 09:45:22

0

AbstractFactory模式是另一个抽象层次。用户不知道他会得到什么类型的对象,并且对此不感兴趣。 AbstractFactory决定它用于创建用户将要接收的具体对象的方法。

在方法工厂中,用户决定使用哪种方法来创建对象并知道他得到了什么。但这并不总是与他有关。

如果我在Method Factory中请求一个按钮,我需要知道我是否需要LinuxButton或WindowsButton或OSXButton。在AbstractFactory中,我请求一个按钮,我收到一个按钮......并且AbstractFactory将决定如何创建按钮,以了解我们的操作系统。

1

简而言之:
Factory Method是一个设计模式,“隐藏” 具体类型从您的代码,从而提供松耦合的其余部分的实例化。

Abstract Factory是引入提供不同类型的工厂的设计模式是负责创建的具体类型的特定群体。因此,您可以在抽象工厂之间切换,并因此最终在代码中获取不同的具体对象实例。

因此Abstract Factory是升级,即Factory Method的生成。在简单的项目中,后者是足够的。在具有复杂层级的项目中,需要Abstract Factory

0

根据理解关于抽象工厂是抽象工厂模式是用来当你有工厂,可以创建一个对象的家族。同时还有Factory类的抽象。

而在工厂方法的情况下对工厂类进行抽象并产生一组产品对象。