軟體裡的簡單工廠模式

2021-10-04 18:46:26 字數 1713 閱讀 4790

軟體中,有時需要將物件的建立與使用分離,這時就需要簡單工廠模式了。

一、簡單工廠模式的三個角色

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

2)抽象產品(abstractproduct)角色:簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

3)具體產品(concrete product)角色:簡單工廠模式所建立的具體例項物件。

圖(1) 簡單工廠模式的uml圖

二、適用場景

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

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

三、工廠模式的優缺點

1)優點

1.1) 實現了物件建立和使用的分離;

1.2) 不需要記住具體類名,記住引數即可,減少使用者的記憶負擔。

2) 缺點:

2.1)對工廠類職責過重,一旦不能工作,系統受到影響;

2.2)增加系統中類的個數,複雜度和理解度增加;

2.3)違反"開閉原則",新增新產品需要修改工廠邏輯,工廠越來越複雜。

四、案例

圖(2) 水果類的簡單工廠模式uml圖

4.1 原設計 ver1.1

#define _crt_secure_no_warnings

#include

#include

using

namespace std;

class

fruit

elseif(

this

->kind ==

"banana")}

void

getname()

elseif(

this

->kind ==

"banana")}

private

: string kind;

//水果的種類};

//工廠模式的目的,就是讓業務層和類的建構函式之間解耦合,

//盡量降低乙個類的複雜度

intmain

(void

)

4.2)加入了簡單工廠模式的設計 ver1.2

#define _crt_secure_no_warnings

#include

#include

using

namespace std;

//水果類

class

fruit

;class

:public fruit};

class

banana

:public fruit};

//乙個工廠

class

factory

else

if(kind ==

"banana")}

};intmain

(void

)

版本ver1.2 比ver1.1**的可維護性、可擴充套件性要好。

軟體設計模式 簡單工廠模式

軟體體系結構與設計模式相關相關知識 客戶端直接通過car類的子類實現相關功能 1 高度耦合 2 條件語句塊需要寫在客戶端內,特別難看 3 客戶程式需要知道服務類的全部的細節才能實現使用工廠模式,將選擇與初始化乙個合適的類,將功能封裝在這個類當中的專門的方法當中 強調 委託的思想,客戶不需要知道服務的...

工廠模式 簡單工廠

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

工廠模式 簡單工廠

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