1 簡單工廠模式

2021-09-24 21:57:57 字數 1324 閱讀 1833

簡單工廠模式(****** 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 簡單工廠的定...