工廠模式(Factory) 設計模式(一)

2021-07-16 13:42:49 字數 1319 閱讀 5118

作用:

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。 factory method 使乙個類的例項化延遲到其子類。

工廠模式可分為三類,簡單工廠模式、工廠方法模式、抽象工廠模式;在本節,我們來討論一下簡單工廠模式和工廠方法模式。

簡單工廠模式:

舉個簡單的例子:

肯德基可以**兩種不同風味的雞腿,具體賣哪一種呢?由客戶決定該給客戶賣哪一種。下面給出乙個簡單的實現用例。

#include

using namespace std;

enum ctype ;

class chicken

;

//麻辣味雞腿

class chickena: public chicken

}; int main()

這就是簡單的工廠模式,突然有一天,有個吃貨給肯德基提議增加黑椒味的雞腿,這下可難住肯德基了,因為如果我增加的話,我就要改變我自己呀。這不就違反了開放、封閉原則了嗎?

於是,工廠方法模式就出現了。

還是以雞腿為例說明問題吧,畢竟作為乙個吃貨,吃才是本職。

哎吆,肯德基經過賣雞腿賺了錢了,這是肯德基就要考慮考慮了。為了顧客分流,肯德基用了洪荒之力開闢兩個櫃檯,乙個來賣麻辣味的雞腿,另乙個了賣芝士味雞腿。這樣想吃什麼風味的雞腿就直接去對應的櫃檯了嘛。

#include

using namespace std;

class chicken

;

//麻辣味雞腿

class chickena: public chicken

;//櫃檯a,專賣麻辣雞腿

class factorya: public factory

};//櫃檯b,專賣芝士雞腿

class factoryb: public factory

};int main()

當然這樣做的結果是,肯德基只要每增加一種口味的雞腿就要新開闢一塊櫃檯來賣這種口味的雞腿,為了節約成本,啃得雞提出了新方案來解決這個問題,就要引出後面的抽象工廠了。好的。抽象工廠模式我們下次來討論,不見不散!

這是我自己理解的factory模式。

這是網上找的uml圖:

設計模式 工廠模式(Factory)

除了使用new關鍵字以外,還有更多製造物件的方法。new意味著在例項化乙個具體的類,所以物件的方法是準確的實現,而非抽象的方法定義。因此這樣一來 將會缺乏彈性。我們針對介面程式設計,可以隔離掉以後系統中可能發生的一大堆改變,如果 針對介面來寫,那麼對於乙個方法的實現將會是多種多樣的。當 使用大量具體...

設計模式之Factory 工廠模式

工廠模式是很常見的一種模式,主要由三個元素構成 生產者 產品和購買者 1.生產者 根據產品名稱或者產品的特性生產相應的產品 2.產品 具有某種共性的產品,把產品的共性抽象到介面中,而每一種具體的產品針對本身特有的性質來實現介面方法 3.購買者 購買者向生產者訂購某種產品,生產者將產品生產出來交給購買...

設計模式 2 工廠模式(Factory)

個人而言我認為工廠模式是應用最為廣泛的一種模式了,工廠模式也屬於建立型模式,一般來說分為 簡單工廠模式 抽象工廠 abstactfactory 模式。這個模式有什麼好處呢?我們可以通過下面這個例子來 假設工廠生產一些了很多種產品,並且需要為這些產品設計很多的包裝,每個產品用來展示用各自的包裝設計展示...