大戰設計模式 4 簡單工廠模式

2021-09-07 15:12:43 字數 1457 閱讀 7912

設計模式使用的例子

定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。

因為在簡單工廠模式中用於建立例項的方法是靜態(static)方法,因此簡單工廠模式又被稱為靜態工廠方法模式,它屬於建立型模式。

factory(工廠角色):該模式的核心,負責實現建立所有產品例項的內部邏輯,提供乙個靜態的工廠方法getproduct(),返回抽象產品型別product的例項。

product(抽象產品角色):所有產品類的父類,封裝了各種產品物件的共有方法,它的引入將提高系統的靈活性,

使得在工廠類中只需要定義乙個通用的工廠方法,因為所有建立的具體產品物件都是其子類物件。

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

實現了物件建立和使用的分離:客戶端可以免除直接建立產品物件的職責,而僅僅「消費」產品。

客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的的引數即可。

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

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

使用簡單工廠模式勢必會增加系統中類的個數(引入新的工廠類),增加了系統的複雜度和理解難度。

系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,在產品型別較多時,有可能會造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。

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

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

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

1、簡單工廠模式的要點在於:當你需要什麼,只需要傳入乙個正確的引數,就可以獲取你所需的物件,而無須知道其建立細節。

從表面上面看,你的主要邏輯**中是沒有new。

2、簡單工廠模式生產的產品擁有通用的方法,也就是說這些產品因為都來自抽象產品所以有共性,也可以有自己的特性。

3、簡單工廠模式,說白了,就是將new的方法封裝在乙個工廠中,將生產的產品進行抽象合併。

好處是,當有多個地方都需要使用產品時,可以使用同乙個工廠進行生產。

當不需要乙個產品時,或者需要新增一種產品時,可以在工廠中直接進行修改

4、缺點是,呼叫簡單工廠時必須了解這個工廠生產怎麼樣的產品,必須傳入正確的引數。

當工廠崩潰的時候,那麼從工廠獲取產品的地方都會收到影響而不能正常工作。

大戰設計模式 4 簡單工廠模式

設計模式使用的例子 定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態 static 方法,因此簡單工廠模式又被稱為靜態工廠方法模式,它屬於建立型模式。factory 工廠角色 該模式的核心,負責實現建立所有產品例項的...

大戰設計模式 6 抽象工廠模式

設計模式使用的例子 抽象工廠模式提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類,它是一種物件建立型模式。abstractfactory 抽象工廠角色 宣告了一組用於建立一族產品的方法,每乙個方法對應一種產品。concretefactory 具體工廠角色 實現了在抽象工廠中宣告的建...

大戰設計模式 6 抽象工廠模式

設計模式使用的例子 抽象工廠模式提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類,它是一種物件建立型模式。abstractfactory 抽象工廠角色 宣告了一組用於建立一族產品的方法,每乙個方法對應一種產品。concretefactory 具體工廠角色 實現了在抽象工廠中宣告的建...