2012-04-01 81 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類的抽象。

而在工廠方法的情況下對工廠類進行抽象併產生一組產品對象。