簡單工廠模式

2021-07-31 23:59:17 字數 1592 閱讀 4482

1.概述

簡單工廠模式是工廠模式中最簡單的一種,他可以用比較簡單的方式隱藏建立物件的細節,一般只需要告訴工廠類所需要的型別,工廠類就會返回需要的產品類,但客戶端看到的只是產品的抽象物件,無需關心到底是返回了哪個子類。客戶端唯一需要知道的具體子類就是工廠子類。除了這點,基本是達到了依賴倒轉原則的要求。

假如,我們不用工廠類,只用abstractproduct和它的子類,那客戶端每次使用不同的子類的時候都需要知道到底是用哪乙個子類,當模擬較少的時候還沒什麼問題,但是當模擬較多的時候,管理起來就非常的麻煩了,就必須要做大量的替換,乙個不小心就會發生錯誤。

而使用了工廠類之後,就不會有這樣的問題,不管裡面多少個類,我只需要知道型別號即可。不過,這裡還有乙個疑問,那就是如果我每次用工廠類建立的型別都不相同,這樣修改起來的時候還是會出現問題,還是需要大量的替換。所以簡單工廠模式一般應該於程式中大部分地方都只使用其中一種產品,工廠類也不用頻繁建立產品類的情況。這樣修改的時候只需要修改有限的幾個地方即可。

2.uml圖

客戶只需要知道******factory就可以了,使用的時候也是使用的abstractfactory,這樣客戶端只在第一次建立工廠的時候是知道具體的細節的,其他時候它都只知道abstractfactory,這樣就完美的達到了依賴倒轉的原則。

3.**實現

#include using namespace std;

#define safe_release(_p) }

class abstractproduct

;class producta : public abstractproduct

4.使用場景

例如部署多種資料庫的情況,可能在不同的地方要使用不同的資料庫,此時只需要在配置檔案中設定資料庫的型別,每次再根據型別生成例項,這樣,不管下面的資料庫型別怎麼變化,在客戶端看來都是只有乙個abstractproduct,使用的時候根本無需修改**。提供的型別也可以用比較便於識別的字串,這樣不用記很長的類名,還可以儲存為配置檔案。

這樣,每次只需要修改配置檔案和新增新的產品子類即可。

所以簡單工廠模式一般應用於多種同型別類的情況,將這些類隱藏起來,再提供統一的介面,便於維護和修改。

5.優缺點

優點1).隱藏了物件建立的細節,將產品的例項化推遲到子類中實現。

2).客戶端基本不用關心使用的是哪個產品,只需要知道用哪個工廠就行了,提供的型別也可以用比較便於識別的字串。

3).方便新增新的產品子類,每次只需要修改工廠類傳遞的型別值就行了。

4).遵循了依賴倒轉原則。

缺點1).要求產品子類的型別差不多,使用的方法名都相同,如果模擬較多,而所有的類又必須要新增一種方法,則會是非常麻煩的事情。或者是一種類另一種類有幾種方法不相同,客戶端無法知道是哪乙個產品子類,也就無法呼叫這幾個不相同的方法。

2).每新增乙個產品子類,都必須在工廠類中新增乙個判斷分支,這違背了開放-封閉原則。

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫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...