设计模式之简单工厂模式

 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 (copy)

来看下面个例子:
  1 class CSamsung
2
3 {
4
5 public:
6
7 CSamsung(){}
8
9 virtual ~CSamsung(){}
10
11 virtual void MakeCall(const string & cellnum)=0;
12
13 };
14
15 //一下从CSamsung派生
16
17 class CI9100:public CSamsung
18
19 {
20
21 public:
22
23 CI9100(){}
24
25 ~CI9100(){};
26
27 void MakeCall(const string & cellnum)
28
29 {
30
31 cout<<"make a call by i9100\n"<<endl;
32
33 cout<<cellnum<<endl;
34
35 }
36
37 }
38
39 class CI9000:public CSamsung
40 {
41
42 public:
43
44 CI9000(){}
45
46 ~CI9000(){};
47
48 void MakeCall(const string & cellnum)
49
50 {
51
52 cout<<"make a call by i9000"<<endl;
53
54 cout<<cellnum<<endl;
55
56 }
57
58 }
59
60 //工厂类
61
62 class Factory
63
64 {
65
66 public: Factory(){}
67
68 ~Factory(){}
69
70 static CSamsung * MakePhone(const string & phonekind)
71
72 {
73
74 CSamsung * p = NULL;
75
76 if(phonekind == "9100")
77
78 {
79
80 p = new CI9100;
81
82 }
83
84 if(phonekind == "9000")
85
86 {
87
88 p = new CI9000;
89
90 }
91
92 return p;
93
94 }
95
96 }
97
98
99
100 int main()
101
102 {
103
104 CSamsung * p = NULL;
105
106 p = Factory::MakePhone("9100");
107
108 p->MakeCall("123457890");
109
110 delete p;
111
112 return 0;
113
114 }
posted @ 2012-01-13 13:22  rookie_zw  阅读(120)  评论(0)    收藏  举报