設計模式 工廠方法 c 詳解版

2021-09-20 07:18:43 字數 2188 閱讀 7197

目錄

什麼是工廠方法?

怎樣實現工廠方法?

工廠方法使用例項(計算器)

工廠方法vs簡單工廠模式

answer:是一種實現了工廠概念的物件導向的設計模式,是處理在不指定物件具有具體型別的情況下建立物件的問題。工廠方法是簡單工廠方法的進一步抽象和推廣。由於使用了程式語言的多型性,工廠方法保持了簡單工廠模式的優點,同時,克服了它的缺點。

answer:在簡單工廠模式的基礎上,再新增乙個工廠的介面,然後將不同物件的獲取封裝於工廠的派生類之中,及封裝於小工廠之中,小工廠之中封裝了得到不同物件的方法。通過新增小工廠的來新增不同的物件。在以計算器為例,分析一下用工廠方法實現計算器的uml圖。

只是在簡單的工廠上新增了乙個工廠的抽象類。

# includeusing namespace std;

//定義乙個基類

class operation

double geta()

void setb()

double getb()

//虛函式實現動態繫結

virtual double getresult()

private:

double numa;

double numb;

};//通過繼承基類獲得四個產品

class operationadd : public operation

};class operationsub : public operation

};class operationmuti : public operation

};class operationdiv : public operation

} catch (int)

return (operation::geta() /operation::getb());

}};/*工廠方法對簡單工廠做了進一步抽象, 多了乙個factory類,這個類將不再負責具體的產品生產,

而是只制定一些規範,具體的生產工作由其子類工廠去完成去完成。

再進行進一步的理解:就相當於汽車製造商其實只是從許多子製造工廠購買零件,再進行組裝,將比較細化的操作交給底層

去做,自己只通過介面來獲得零件。

*///定義乙個大的工廠

class factor

;class factoradd :public factor

};class factorsub :public factor

};class factormuti :public factor

};class factordiv :public factor

};int main()

{ //先建立乙個工廠 因為要動態繫結 用基類的工廠的指標或者引用去接受

//用乙個大工廠去接收小工廠

factor *factoy = new factordiv();

//用基類指標去接受派生類的物件

operation *op = factoy->createoperation();

//呼叫相關的操作

op->seta();

op->setb();

cout<

在簡單工廠模式中,如果需要增加一種新的運算為m的n次方,那麼我們除了需要增加乙個能建立這種物件的類,還要修改工廠類中的邏輯方法,等於是上一層和下一層的**都要進行修改,這樣就違反了開閉原則。

在工廠方法中,如果需要增加一種新的運算為m的n次方,需要增加乙個類,然後只需要再增加乙個工廠用來獲取新的這種物件,最頂層的工廠的介面是不會變的,這就很好的體現了開閉原則。具體**如下:

int main()

{ //先建立乙個工廠 因為要動態繫結 用基類的工廠的指標或者引用去接受

//用乙個大工廠去接收小工廠

factor *factoy = new factordiv();

//用基類指標去接受派生類的物件

operation *op = factoy->createoperation();

//呼叫相關的操作

op->seta();

op->setb();

cout<

設計模式 抽象工廠方法 c 詳解版

目錄 什麼是抽象工廠方法?實現?抽象工廠方法的特點?answer 抽象工廠模式是圍繞乙個超級工廠來建立其他工廠,該超級工廠又稱為其他工廠的工廠。這種型別的建立模式屬於建立型模式,它提供了一種建立物件的最佳方式。在抽象工廠模式中,介面是乙個負責建立相關物件的工廠,不需要顯示指定它們的類,每個生成的工廠...

C 設計模式 工廠方法

定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法 factory method 使乙個類的例項化延遲到其子類。也叫虛構造器 virtual constructor 結構 理解 1.product 是工廠方法生產產品的抽象基類。2.creator 是生產產品的工廠物件抽象基類。cr...

C 設計模式 工廠方法

定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法 factory method 使乙個類的例項化延遲到其子類。也叫虛構造器 virtual constructor 結構 理解 1.product 是工廠方法生產產品的抽象基類。2.creator 是生產產品的工廠物件抽象基類。cr...