設計模式 簡單工廠模式

2021-04-08 13:22:01 字數 2005 閱讀 9809

一、

簡單工廠(

****** factory

)模式

****** factory

模式根據提供給它的資料,返回幾個可能類中的乙個類的例項。通常它返回的類都有乙個公共的父類和公共的方法。

****** factory

模式實際上不是

gof 23

個設計模式中的一員。 二、

****** factory

模式角色與結構:

工廠類角色

creator (light******factory)

:工廠類在客戶端的直接控制下(

create

方法)建立產品物件。

抽象產品角色

product (light)

:定義簡單工廠建立的物件的父類或它們共同擁有的介面。可以是乙個類、抽象類或介面。

具體產品角色

concreteproduct (bulblight, tubelight)

:定義工廠具體加工出的物件。 三、

程式舉例:

using

system;

public

abstract

class

light

public

class

bulblight : light

public

override

void

turnoff()

}public

class

tubelight : light

public

override

void

turnoff()

}public

class

light******factory

}public

class

client}四、

****** factory

模式演化

****** factory

模式演化(一)

除了上面的用法外,在有些情況下

****** factory

可以由抽象產品角色扮演,乙個抽象產品類同時是子類的工廠。

程式舉例:

using

system;

public

class

light

public

virtual

void

turnoff()

public

static

light create(

string

lighttype)

}public

class

bulblight : light

public

override

void

turnoff()

}public

class

tubelight : light

public

override

void

turnoff()

}public

class

client

}****** factory

模式演化(二)

三個角色全部合併:

與單件模式(

singleton

)相近,但是有區別。 五、

優點與缺點:

優點:工廠類含有必要的判斷邏輯,可以決定在什麼時候建立哪乙個產品類的例項,客戶端可以免除直接建立產品物件的責任,而僅僅"消費

"產品。簡單工廠模式通過這種做法實現了對責任的分割。

缺點:

當產品有複雜的多層等級結構時,工廠類只有自己,以不變應萬變,就是模式的缺點。因為工廠類集中了所有產品建立邏輯,一旦不能正常工作,整個系統都要受到影響。

同時,系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,有可能造成工廠邏輯過於複雜。

另外,簡單工廠模式通常使用靜態工廠方法,這使得無法由子類繼承,造成工廠角色無法形成基於繼承的等級結構。

設計模式 工廠模式(簡單工廠)

一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...

設計模式(簡單工廠模式 工廠模式 抽象工廠模式)

當邏輯較為簡單時,可以直接建立對應的類。如下 include using namespace std class class banana class pear intmain 通過此 可以發現,使用者直接與客戶接觸,違背了dip 依賴倒轉 原則,過於麻煩,所以引出簡單工廠模式。include us...

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

請用任意一種物件導向語言實現計算器控制台程式,要求輸入兩個數和運算符號,得到結果。operation運算類 public class operation set public double numberb set public virtual double getresult 加減乘除類 using...