簡單工廠模式

2021-08-26 15:28:21 字數 1266 閱讀 8482

簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式。實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

簡單工廠模式包含三個角色:

(1)工廠類factory:工廠類是用來製造產品的。因此,在factory中有乙個用於製造產品的create函式或者generate函式之類的函式。這個函式能夠根據「識別符號」的不同生成不同的concreteproduct,當然這些concreteproduct都是繼承自abstractproduct的。

(2)抽象產品類abstractproduct:抽象產品是從其他具體產品抽象出來的。抽象產品類只有乙個。

(3)具體產品類concreteproduct:具體產品類繼承自抽象產品類,可以有多個。當需要增加新的產品的時候就增加乙個繼承自抽象產品類的具體產品類即可。

實現了松耦合,當需要增加一種新產品(在大話設計模式中,例子是 運算operation),只需要做兩點改動:

(1)增加乙個繼承自抽象產品(抽象的運算)的具體產品(一種具體的運算);

(2)在工廠類中,switch中,增加一種根據識別符號產生新運算的case即可。

#include #include using namespace std;

//抽象類

class operation

double getb() const

void seta(double x)

void setb(double y)

double virtual getresult()

operation() :a(0), b(0) {}

};//具體類

class add : public operation

};class sub : public operation

};class mul : public operation

};class div : public operation

};//工廠類

class ******factory

return p;

}};//客戶做的事情

工廠模式 簡單工廠

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