簡單工廠模式

2021-05-28 06:56:33 字數 1272 閱讀 1717

專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。它又稱為靜態工廠方法模式,屬於類的建立型模式。

簡單工廠模式的uml類圖

簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

該模式中包含的角色及其職責

工廠(creator)角色

簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。

抽象(product)角色

簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

具體產品(concrete product)角色

是簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

一般來講它是抽象產品類的子類,實現了抽象產品類中定義的所有介面方法。

簡單工廠模式的特點:

簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用時可以直接根據工廠類去建立所需的例項,而無需了解這些物件是如何建立以及如何組織的。有利於整個軟體體系結構的優化。

不難發現,簡單工廠模式的缺點也正體現在其工廠類上,由於工廠類集中了所有例項的建立邏輯,所以「高內聚」方面做的並不好。另外,當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴充套件性並不很好。

例項**如下:

cpp**  

#include 

using

namespace

std;  

//定義抽象類

class

canimal  

;  //定義具體類

class

cfish : 

public

canimal  

};  

class

cbird : 

public

canimal  

};  

//定義工廠類

class

cfactory  

}  };  

//測試類

intmain(

intargc, 

char

* argv)    

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...