2010-03-06 38 views
4

有些人推薦java中的工廠模式。我不知道這一點。在java中使用工廠模式的主要目標是什麼?給我你的建議哪種類型的模式有用?使用工廠模式的主要目標?

+1

所有的圖案都是有用的,因此它們被設計以滿足特定的任務/目標。你想達到什麼目標需要設計模式? – 2010-03-06 13:15:22

回答

2

有2衆所周知工廠模式:

  • 工廠方法模式。
  • 抽象工廠模式。

廠方法圖案基本上「涉及不指定確切的類對象的將要創建創建對象(產品)的問題。」而抽象工廠模式「提供了封裝一組具有共同主題的單個工廠的方法。」

工廠方法用於創建對象,基本上創建一個方法的工廠接口,子類可以派生和實現創建對象的方法。這允許封裝不擔心誰製造了對象,但是一旦該方法被執行,您就完成了對象。

抽象工廠模式將工廠封裝在一起,他們有same目標函數來完成任務。例如。你可能有一個按鈕GUI,並有工廠,如WindowFactoryLinuxFactory,AppleFactory,可以創建這些按鈕。將這些工廠包裝到一個抽象工廠中,以便在提供操作系統時返回一個操作系統特定的工廠來創建Button

希望這是明確的。對不起,沒有使用適當的英文建設性的量刑。

+0

工廠模式:http://en.wikipedia.org/wiki/Factory_method_pattern
抽象工廠模式:http://en.wikipedia.org/wiki/Abstract_factory_pattern – 2010-03-06 13:26:42

3

該目標取決於工廠模式的類型,例如,抽象工廠:「提供一個界面,用於創建相關或依賴對象的族,而不指定具體的類。」從Design Patterns

大多數工廠模式允許您放鬆創建請求和創建的對象的類之間的耦合。這可以讓你保留改變主意的權利。

此方法通常用於啓用存根或模擬對象的單元測試。

1

最主要的好處是,無論何時想要更改代碼中使用的具體實現,都不需要重寫/重新生成/重新部署代碼。使用工廠,您只需要更改外部配置設置(屬性文件?)要使用的實現類和/或更改包含實現的外部JAR文件。

你看這個好早在幾個Java API的它提供possibities創建特定供應商的實施,如JDBCJAXP

2

工廠模式允許你分離(減少依賴)類之間這是消費者。您不需要使用構造函數創建它的依賴對象,而是爲其提供一個知道如何創建對象的工廠,並使用工廠創建相關對象。將接口與工廠結合使用可以提供更大的解耦,因爲它允許將工廠更改爲生成實現接口的不同具體對象,而無需更改消費類。在這種方式中,它經常用於單元測試,您提供了依賴關係的模擬實現,而不是用於測試的實際實現。但是,通常情況下,只要您有可能實現可根據程序的狀態或配置提供的接口的多個變體,就可以使用工廠。

0

你會使用工廠模式(在它的許多形式之一)時:

  • 對象的創建是讓對象負責本身過於複雜。
  • 對象的創建需要其他物體相互作用/知識和創造
  • 對象的創建依賴於全局狀態/環境變量
  • 這種對象的請求不應該被綁定到特定的實現,而是一個接口(對於抽象工廠的情況下)