什麼是工廠方法模式?
定義乙個建立產品物件的工廠介面(ifactory),將實際建立工作推遲到子類(addfactory、subfactory、mulfactory、divfactory)當中。
核心工廠類(ifactory)不再負責產品的建立,僅作為乙個抽象(有純虛方法)工廠角色,只負責宣告具體工廠子類
必須實現的介面(即純虛方法)。
這樣進一步抽象化的好處:系統在不需要修改具體工廠角色的情況下引進新的產品(與簡單工廠模式相比)。
工廠方法模式**示例
示例**如下:
1 #include2 #include 3
using
namespace
std;45
class
operation616
17void setnumbera(double
dvalue)
1821
22double
getnumberb()
2326
27void setnumberb(double
dvalue)
2831
32virtual
double
getresult()
3336
};37
38class addoperation : public
operation
3945
};46
47class suboperation : public
operation
4854
};55
56class muloperation : public
operation
5763
};64
65class divoperation : public
operation
6672
};73
74class
ifactory75;
7980
class addfactory : public
ifactory
8187
};88
89class subfactory : public
ifactory
9096
};97
98class mulfactory : public
ifactory
99105
};106
107class divfactory : public
ifactory
108114
};115
116void
main()
117128
129//
run out:
130/*
131891
132請按任意鍵繼續. . .
133*/
工廠方法模式示例**
**如下:
1 #include2 #include 3
using
namespace
std;45
//抽象產品類1
6class
iuser7;
1213
//具體產品類1(sqluser)
14class sqluser : public
iuser
1521
void
setuser()
2225
};26
27//
具體產品類1(accessuser)
28class accessuser : public
iuser
2935
void
setuser()
3639
};40
41//
抽象工廠類
42class
ifactory43;
4748
//具體工廠類(sqlfactory)
49class sqlfactory : public
ifactory
5056
};57
58//
具體工廠類(accessfactory)
59class accessfactory : public
ifactory
6066
};67
68void
main()
6987
88//
run out:
89/*
90在sql中返回user
91在sql中設定user
92在access中返回user
93在access中設定user
94請按任意鍵繼續. . .
95*/
以上**主要與《抽象工廠模式》對比,為了更好的理解兩者之間的區別。
good good study, day day up.
順序 選擇 迴圈 總結
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...