C++设计模式之工厂方法模式
- 简介
- 原理
- 示例
- 定义产品类
- 定义工厂类
- 客户端使用
- 结论
简介
工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,它的作用是定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法模式使一个类的实例化延迟到其子类。
原理
工厂方法模式的核心思想是将对象的创建和使用分离开来。工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪个类。也就是说,客户端只需要知道所需产品的工厂,而不需要知道具体的产品类。
示例
以创建不同类型的汽车为例,实现一个简单的工厂方法模式。
定义产品类
class Car {
public:
virtual void run() = 0;
};
class BenzCar : public Car {
public:
virtual void run() {
std::cout << "Benz Car is running." << std::endl;
}
};
class BmwCar : public Car {
public:
virtual void run() {
std::cout << "BMW Car is running." << std::endl;
}
};
定义工厂类
class CarFactory {
public:
virtual Car* createCar() = 0;
};
class BenzCarFactory : public CarFactory {
public:
virtual Car* createCar() {
return new BenzCar();
}
};
class BmwCarFactory : public CarFactory {
public:
virtual Car* createCar() {
return new BmwCar();
}
};
客户端使用
CarFactory* factory = new BenzCarFactory();
Car* car = factory->createCar();
car->run();
结论
工厂方法模式通过面向对象的方式,将对象的创建和使用分离开来,从而达到了解耦的目的。工厂方法模式使得客户端无需关心具体的产品类,只需要知道所需产品的工厂即可。同时,工厂方法模式具有良好的扩展性,在增加新的产品类时,只需要添加一个新的具体工厂类即可。