設計模式學習總結之簡單工廠模式

2021-08-01 21:14:52 字數 1571 閱讀 3748

在之前學習設計模式過程,主要參考csdn大牛lovelion的技術部落格(

這邊的總結主要設計學習過程中的一些知識點。

簡單工廠模式(****** factory pattern):定義乙個工廠類,它可以根據引數的不同返回不同類的例項,

被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態(static)方法,

因此簡單工廠模式又被稱為靜態工廠方法(static factory method)模式,它屬於類建立型模式。

首先將需要建立的各種不同物件的相關**封裝到不同的類中,這些類稱為具體產品類,而將它們公共的**

進行抽象和提取後封裝在乙個抽象產品類中,每乙個具體產品類都是抽象產品類的子類;然後提供乙個工廠類

用於建立各種產品,在工廠類中提供乙個建立產品的工廠方法,該方法可以根據所傳入的引數不同建立不同的

具體產品物件;客戶端只需呼叫工廠類的工廠方法並傳入相應的引數即可得到乙個產品物件。

● factory(工廠角色):工廠角色即工廠類,它是簡單工廠模式的核心,負責實現建立所有產品例項的內部

邏輯;工廠類可以被外界直接呼叫,建立所需的產品物件;在工廠類中提供了靜態的工廠方法

factorymethod(),它的返回型別為抽象產品型別product。

● product(抽象產品角色):它是工廠類所建立的所有物件的父類,封裝了各種產品物件的公有方法,

它的引入將提高系統的靈活性,使得在工廠類中只需定義乙個通用的工廠方法,因為所有建立的具體產品

物件都是其子類物件。

● concreteproduct(具體產品角色):它是簡單工廠模式的建立目標,所有被建立的物件都充當這個角色

的某個具體類的例項。每乙個具體產品角色都繼承了抽象產品角色,需要實現在抽象產品中宣告的抽象方法。

1:工廠類包含必要的判斷邏輯,可以決定在什麼時候建立哪乙個產品類的例項,客戶端可以免除直接建立產品

物件的職責,而僅僅"消費"產品,簡單工廠模式實現了物件建立和使用的分離。

2:客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可,對於一些複雜的類名,

通過簡單工廠模式可以在一定程度減少使用者的記憶量。

3:通過引入配置檔案,可以在不修改任何客戶端**的情況下更換和增加新的具體產品類,在一定程度上提高

了系統的靈活性。

1:由於工廠類集中了所有產品的建立邏輯,職責過重,一旦不能正常工作,整個系統都要受到影響。

2:會增加系統中類的個數(引入了新的工廠類),增加了系統的複雜度和理解難度

3:系統的擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,在產品型別較多時,有可能造成工廠邏輯過於

複雜,不利於系統的擴充套件和維護

4:簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構。

1:工廠類負責建立的物件比較少,這樣不會造成工廠方法中的業務邏輯太過複雜。

2:客戶端只知道傳入工廠類的引數,對於如何建立物件並不關心。

設計模式學習之簡單工廠模式和工廠模式

1 兩者之間的共同 都是建立shape介面,然後分別建立circle rectangle square這三個類,實現shape介面方法即可。不同之處在建立工廠類上。簡單工廠 只建立乙個工廠類 packagecn.zyy.design.mode.factory public class factory...

設計模式 工廠模式之簡單工廠模式

定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...

設計模式 工廠模式之簡單工廠

工廠模式可以分為 簡單工廠模式 普通工廠模式 靜態工廠模式 抽象工廠模式 簡單工廠模式 就是如何去例項化物件的問題,對於很容易變化的問題,應該考慮用乙個單獨的類來做這個創造例項的過程,這個單獨的類就是工廠 例子 通過簡單工廠建立各種圖形的實現過程 簡單工廠模式建立步驟 建立乙個介面 例 圖形介面 建...