簡單工廠模式(****** factory pattern):又稱為靜態工廠方法(static factory method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。
當我們需要使用乙個物件時,通常只需要通過關鍵字 new ,就可以得到乙個例項,為什麼還需要通過簡單工廠這麼繁瑣的方式建立物件呢?
舉例說明:
正常模式下,我需要乙個蘋果,我需要建立乙個蘋果的物件,並操作物件獲得蘋果,當我想要乙個香蕉的時候要需要建立乙個香蕉的物件,並操作它獲取香蕉,同理,我想要獲取其他的水果,都需要先建立乙個物件,然後獲得。這樣物件在很多地方進行使用,那麼大量相同且繁瑣的處理邏輯,會擴散到專案各個地方;
因此,工廠模式產生了,當你需要什麼,只需要傳入乙個正確地引數,就能獲取你所需要的物件,無需了解怎麼樣建立物件。
如圖所示:當想要蘋果的時候直接在農場中進行獲取蘋果就ok,不需要親自去蘋果園進行採摘。
模式結構:
(a)
抽象角色:簡單工廠模式所建立所有物件的父類,它負責描述所有例項所有的公共介面;例如:fruit類
(b)
工廠角色:簡單工廠模式的核心,他負責實現建立所有實力的內部邏輯,工廠類可以被外界直接呼叫,建立所需的產品物件;fruitfactory類
(c)
具體產品角色:簡單工廠模式所建立的具體例項物件;具體產品類例如:蘋果,香蕉等
**邏輯結構如下圖所示,通過工廠類中得方法傳入想要得型別,就可以獲得相應地例項類。
a.簡化物件的使用
b.簡化冗餘邏輯
c.減少重複**
當需要根據一定的邏輯,建立乙個抽象介面的一系統物件時;
前提條件:
抽象介面的實現類不應太多,而且種類固定(不會隨著時間變化而增加),否則,簡單工廠方法中的if else判斷會越來越多,越來越複雜;而且還需要不斷修改工廠方法,這違背了「開閉原則」;
例如:jdbc連線,
計算機運算池,
jdk中的numberformat,根據local,返回適合當地型別的numberformat物件;
private static numberformat getinstance(locale desiredlocale, int choice);
1 簡單工廠模式
工廠類61 到底要例項化誰,將來會不會增加例項化的物件,比如增加開跟運算,這是很容易變化的地方,62 應該考慮用乙個單獨的類來做這個創造例項的過程,這就是工廠 63template class t 64class operationfactory 6574 else if operate 75 78...
1 簡單工廠模式
一 做乙個商場收銀軟體 二 code using system namespace web.策略模式 正常收費子類 class cashnoraml cashsuper 打折收費子類 public class cashrebate cashsuper 返回折扣 原價 public override ...
1 簡單工廠模式
簡單工廠模式讓使用者在使用物件時無需關心物件的建立細節,從而降低系統的耦合度,讓設計方案更易於修改和擴充套件。1.先用人話講一下什麼是簡單工廠模式 顧客只需要知道香蕉這個名字 僅僅是名字,不是真正的香蕉 水果農場 factory 就能給出香蕉這個水果實體 能吃到嘴的香蕉,product 簡單工廠的定...