版权声明:本文为博主原创文章,未经同意不允许转载! https://blog.csdn.net/wb175208/article/details/84728000
抽象工厂:提供一个创建对象的接口,让创建的创建延迟到具体的工厂类中。
场景:
1.一个系统要独立于它的产品的创建、组合和表示时;
2.提供一个产品类库,只想显示他们的接口而不是实现时;
3.强调一系列相关的产品对象的设计以便于进行联合使用时。
#include <stdio.h>
//产品基类-汽车
class Car {
public:
virtual void carInfor() = 0;
};
class BMWCar :public Car {
public:
void carInfor() {
printf("这是一辆宝马车!\n");
}
};
class DaziCar :public Car {
public:
void carInfor() {
printf("这是一辆大众车!\n");
}
};
//工厂基类-汽车工厂
class CarFactory {
public:
virtual Car *createCar() {
return nullptr;
}
};
class BMWFactory :public CarFactory {
public:
Car* createCar() {
return new BMWCar;
}
};
class DaziFactory :public CarFactory {
public:
Car* createCar() {
return new DaziCar;
}
};
int main() {
BMWFactory* bmwFactory = new BMWFactory;
Car* bmw = bmwFactory->createCar();
bmw->carInfor();
DaziFactory* daziFactory = new DaziFactory;
Car* dazi = daziFactory->createCar();
dazi->carInfor();
return 0;
}
运行结果: