設計模式學習筆記(工廠模式)

2021-08-08 01:22:28 字數 1197 閱讀 2126

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

c++中的工廠方法(工廠基類中所定義的建立產品的函式)都是虛函式並且常常是純虛函式。

product:(工廠基類)定義工廠方法所建立的介面;

concreteproduct:(工廠具體類)實現product介面;

creator:宣告工廠方法,返回乙個product物件;

concretecreator:重新定義工廠方法返回乙個concreteproduct例項。

creator宣告工廠方法create,返回乙個product物件

class creator;

product* creator::create(productid id)

子類mycreator可以重新定義工廠方法返回乙個concreteproduct例項。

product* myproduct::create(productid id)

有時,為了建立適當的product物件,我們不得不建立乙個creator的子類。【可以使用模板子類進行解決】

1、工廠基類

maze、room、wall、door均為產品基類

class mazegame()

virtual room* makeroom(int n) const //工廠方法1

virtual wall* makewall() const //工廠方法2

virtual door* makedoor(room* r1,room* r2) const

};

2、具體工廠類:

class bombedmazegame: public mazegame

virtual room* makeroom() const //重新定義的工廠方法2

}

注意體會與抽象工廠方法的不同,這裡每一種產品的實現其實就是工廠模式。上例中具體工廠通過繼承工廠基類,重新定義工廠方法,最終實現工廠模式。

比較有困惑的是createmaze函式的實現,其實這裡主要是為了完整性考慮,createmaze函式不屬於工廠方法中的參與者。

建立迷宮函式

maze mazegame::createmaze()

設計模式學習筆記 工廠模式

簡單工廠 將建立類的 剝離出來,放到乙個類裡面,通過例項化這個類去獲取想要的物件。先將多個類的物件儲存到map裡,然後通過get方法從裡面獲取 工廠方法 基於介面去實現多個不同的方法,類繼承自介面,然後重寫方法 類裡面再建立乙個靜態類,靜態類裡從父類獲取對應的方法的邏輯,父類裡時多種不同的實現。抽象...

設計模式學習筆記 工廠

簡單工廠 工廠方法 抽象工廠。所謂的工廠,就是生產東西的。在設計模式這裡,工廠就是返回物件的。所以工廠方法 抽象工廠都是建立型的設計模式 簡單工廠不算在23種設計模式裡面 簡單工廠 工廠方法 抽象工廠,乙個比乙個複雜,但又互有關聯,比如工廠方法可以退化成簡單工廠,工廠方法可看成特殊的抽象工廠。1 簡...

設計模式筆記 工廠模式

工廠模式主要是為建立物件提供過度介面,以便將建立物件的具體過程隔離,從而達到提高靈活性的目的 分類一 簡單工廠模式,工廠方法模式,抽象工廠模式 逐步抽象 分類二 工廠方法模式 包括簡單工廠模式 抽象工廠模式 1.簡單工廠模式又稱靜態工廠方法模式,存在目的 定義乙個用於建立物件的介面。組成 工廠類角色...