設計模式之 工廠模式

2021-06-23 05:12:52 字數 1867 閱讀 7317

工廠模式分為:

1、簡單工廠模式

2、工廠方法模式

3、抽象工廠模式

工廠模式定義:例項化物件,用工廠方法代替new操作。

我們在專案中,經常要new乙個物件出來使用,可是當專案內容越來越豐富,需要進行很多new操作,new操作分布在**的不同地方,管理起來很麻煩,而且也很亂,到後期擴充套件和維護的時候,有的時候,物件多的讓開發人員不知道這個物件是幹什麼的,這就增加了難度;同時,new操作,都會有對應的異常處理,最後,就會發現,在**中,new了乙個物件,然後,就跟著一段異常處理**,這時編碼變的極其混亂和臃腫。之前的許多物件還可能還會"生出很多兒子出來", 那麼我們要對這些兒子乙個個例項化,這會讓開發人員越來越可能還要對以前的**進行修改:加入後來生出兒子的例項.這在傳統程式中是無法避免的.

但如果你一開始就有意識使用了工廠模式,這些麻煩就沒有了.

1、簡單工廠模式

在程式中,需要建立的物件很多,導致物件的new操作多且雜時,需要使用簡單工廠模式;

由於物件的建立過程是我們不需要去關心的,而我們注重的是物件的實際操作,所以,我們需要分離物件的建立和操作兩部分,如此,方便後期的程式擴充套件和維護。

我們可以用**實現

#include #include using namespace std;

// here is the product class

class product

;class producta : public product

這裡new 新的product 只需要通過工廠類進行new,方便後續的理解!

2、工廠方法模式

只是對簡單工廠模式的擴充套件,工廠方法模式是在簡單工廠模式的基礎上,對「工廠」新增了乙個抽象層。將工廠共同的動作抽象出來,作為抽象類,而具體的行為由子類本身去實現,讓子類去決定生產什麼樣的產品。簡而言之,就是將factory再分類,每個factory生產一種product!

這是因為如果採用了簡單工廠模式,則如果增加增加生產productd產品;那麼,首先需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結構**。這種修改**更容易引起莫名的錯誤,不如讓**更有擴充套件性。

uml圖:

**實現:

#include #include using namespace std;

class product

;class producta : public product

3.抽象工廠模式

前面的工廠模式,是乙個factory生產乙個product,那如果以後需要生產的產品越來越多,總不能

不停的增加factory來生產吧,這樣既浪費資源又讓**冗長,那我們可能會想到讓工廠來不只生產一件產品,

可以讓工廠增加一條流水線來生產別的產品。就是在factory中增加生產別的product的函式。~

uml圖

**如下:

#include #include using namespace std;

class producta

;class productb

;class producta1 : public producta

2014.08.17

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

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

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