简单工厂模式把逻辑集中在工厂,新加产品都要对工厂类的实现逻辑进行修改(这个工厂比较强大,什么产品都能做);
优点:使用者直接调用工厂的create方法即可。
缺点:耦合性强,新加产品需要修改工厂的实现。
1 #include <iostream>
2 #include <string>
3
4 using namespace std;
5
6 class Car
7 {
8 public:
9 virtual ~Car(){}
10 virtual void run(){}
11 };
12
13 class QQ: public Car
14 {
15 public:
16 void run()
17 {
18 cout << "QQ run ..." << endl;
19 }
20 };
21
22 class BMW: public Car
23 {
24 public:
25 void run()
26 {
27 cout << "BMW run ..." << endl;
28 }
29 };
30
31 class CarFactory
32 {
33 public:
34 static Car* createCar(const string& str)
35 {
36 if(str == "QQ")
37 {
38 return new QQ();
39 }
40 else if(str == "BMW")
41 {
42 return new BMW();
43 }
44 else
45 {
46 return NULL;
47 }
48 }
49 };
50
51
52 int main()
53 {
54 Car * qq = CarFactory::createCar("QQ");
55 qq->run();
56 Car * bmw = CarFactory::createCar("BMW");
57 bmw->run();
58 delete qq;
59 delete bmw;
60 }