當有一些要例項化的具體類,究竟例項化哪個類,要在執行時由一些條件來決定。當**使用大量具體類時,我們就要考慮使用工廠模式了。
定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。
在工廠方法模式中由每個商店自行負責createpizza()方法的行為。在簡單工廠中,工廠是另乙個由pizzafore使用的物件。public
abstract
class pizzastore
protected
abstract pizza createpizza(string type)
}
為了避免字串傳入引數化的型別的危險。我們可以在編譯時期就將引數上的錯誤挑出來。你可以建立代表引數型別的物件和使用靜態常量或者enum。
pizzastore這個抽象類現在依賴pizza這個抽象類。
chicagostylechesspizza這個具體類也是依賴pizza這個抽象類。
在實際執行的時候,根據具體的繼承chicagopizzastore和傳入的引數type決定生產那些具體的pizza。
提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。
public
class
nypizzastore
extends
pizzastore
return pizza;
}}
Design Pattern 簡單工廠模式
1 為什麼要使用工廠模式?首先先看看不使用工廠模式的 class myapi class a public myapi class b public myapi void clientfunc 在物件導向程式設計裡面,非常講究層的劃分和模組的劃分。通常按照三層來劃分程式,分別是表現層 邏輯層和資料層...
design pattern 工廠方法模式
針對問題 當要建立的產品種類很多,並且會隨著時間的推移會不斷改變時。可以將這些變化的部分抽離出來作為乙個繼承結構,運用多型的動態性來替換本來的改變。工廠方法模式結構圖 工廠方法實現 產品介面 author bruce public abstract class product 建立者介面 autho...
Design Pattern之工廠方法模式
在本文之前,已經介紹過簡單工廠模式,簡單工廠模式只有乙個工廠,該工廠負責產生所有的運算類,如果增加乙個運算類,不僅需要修改工廠類,還需要修改客戶端類,這違反了設計模式所提倡的開放 封閉原則。本文所說的工廠方法模式就是在之前的簡單工廠模式前提下增加了各種運算方法的工廠類,uml圖如下 相比較簡單工廠模...