大戰設計模式 5 工廠方法模式

2021-09-07 15:12:43 字數 1031 閱讀 7247

設計模式使用的例子

定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。工廠方法模式讓乙個類的例項化延遲到其子類。

工廠方法模式又簡稱為工廠模式,也可稱為多型工廠模式,它是一種建立型模式。  

product(抽象產品):定義產品的介面,是工廠方法模式所建立的物件的超類,也就是產品物件的公共父類。

concreteproduct(具體產品):它實現了抽象產品介面,某種型別的具體產品由專門的具體工廠建立,具體工廠和具體產品之間一一對應。

factory(抽象工廠):抽象工廠類,宣告了工廠方法,用於返回乙個產品。

concretefactory(具體工廠):抽象工廠的子類,實現了抽象工廠中定義的工廠方法,並可由客戶端呼叫,返回乙個具體產品類的例項。

工廠方法用於建立客戶所需要的產品,還向客戶隱藏了哪種具體產品類將被例項化這一細節。

因此,使用者只需要關心所需產品對應的工廠,無須關心建立細節。

在系統中加入新產品時,無需修改抽象工廠和抽象產品提供的介面,也無須修改客戶端,還無須修改其他的具體工廠和具體產品,

而只要加入乙個具體工廠和具體產品就可以了。因此,系統的可擴充套件性得到了保證,符合開閉原則。

在新增新產品時,需要編寫新的具體產品類,還要提供與之對應的具體工廠類,系統中類的個數將成對增加,一定程度上增加了系統的複雜度。

客戶端不知道其所需要的物件的類。

在工廠方法模式中,客戶端不需要知道具體產品類的類名,只需要知道所對應的的工廠即可,具體的產品物件由具體工廠建立,

可將具體工廠的類名儲存到配置檔案或資料庫中。抽象工廠類通過其子類來指定建立哪個物件。

1、用最白話的方式解釋就是,工廠方法模式就是多個工廠的簡單工廠模式。

2、好處是,使用時,我們可以決定使用的是哪乙個工廠生產什麼樣的產品,當然不同的工廠生產的產品是不同的。

3、利用兩個抽象的地方:

乙個是產品的抽象,保證具體的產品一定有你需要的方法;

乙個是工廠的抽象,保證具體的工廠能生產對應的產品;

參考部落格:

大戰設計模式 5 工廠方法模式

設計模式使用的例子 定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。工廠方法模式讓乙個類的例項化延遲到其子類。工廠方法模式又簡稱為工廠模式,也可稱為多型工廠模式,它是一種建立型模式。product 抽象產品 定義產品的介面,是工廠方法模式所建立的物件的超類,也就是產品物件的公共父類。conc...

設計模式 工廠方法模式

一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...

設計模式 工廠方法模式

1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...