工厂模式(Factory)

简单工厂

只有一个工厂,即一个类负责创建不同类的实例。通常使用static静态方法来创建对象,不需要传递工厂类来创建实例。

优点:

  • 单一工厂类,实现简单

缺点:

  • 扩展性差,添加新类,新产品时,需要修改工厂类代码

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>

using namespace std;

class Car
{
public:
virtual void drive() = 0; // 创建纯虚函数,让每个子类实现
virtual ~Car() {} // 析构虚函数,保证子类析构时能正确调用子类析构函数
};

class BydCar : public Car
{
public:
void drive() override
{
cout << "Driving BydCar" << endl;
}
};

class TeslaCar : public Car
{
public:
void drive() override
{
cout << "Driving TeslaCar" << endl;
}
};

class CarFactory
{
public:
static Car* createCar(const string& brand) // 静态创建方法,可随地调用,来避免创建多个类工厂
{
if (brand == "Byd")
return new BydCar();
else if (brand == "Tesla")
return new TeslaCar();
else
return nullptr;
}
};

int main()
{
Car *bydCar = CarFactory::createCar("Byd");
bydCar->drive();

delete bydCar;
return 0;
}

工厂方法