目錄
什麼是工廠方法?
怎樣實現工廠方法?
工廠方法使用例項(計算器)
工廠方法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...