#include <iostream>
// 抽象产品:汽车
class Car {
public:
virtual void drive() = 0;
};
// 具体产品:SUV汽车
class SUV : public Car {
public:
void drive() {
std::cout << "Driving SUV car." << std::endl;
}
};
// 具体产品:轿车
class Sedan : public Car {
public:
void drive() {
std::cout << "Driving sedan car." << std::endl;
}
};
// 抽象产品:手机
class Phone {
public:
virtual void call() = 0;
};
// 具体产品:安卓手机
class AndroidPhone : public Phone {
public:
void call() {
std::cout << "Making a call with Android phone." << std::endl;
}
};
// 具体产品:苹果手机
class IPhone : public Phone {
public:
void call() {
std::cout << "Making a call with iPhone." << std::endl;
}
};
// 抽象工厂
class AbstractFactory {
public:
virtual Car* createCar() = 0;
virtual Phone* createPhone() = 0;
};
// 具体工厂1:生产SUV汽车和安卓手机
class ConcreteFactory1 : public AbstractFactory {
public:
Car* createCar() {
return new SUV();
}
Phone* createPhone() {
return new AndroidPhone();
}
};
// 具体工厂2:生产轿车和苹果手机
class ConcreteFactory2 : public AbstractFactory {
public:
Car* createCar() {
return new Sedan();
}
Phone* createPhone() {
return new IPhone();
}
};
int main() {
// 使用具体工厂1创建SUV汽车和安卓手机
AbstractFactory* factory1 = new ConcreteFactory1();
Car* suv = factory1->createCar();
Phone* androidPhone = factory1->createPhone();
suv->drive();
androidPhone->call();
// 使用具体工厂2创建轿车和苹果手机
AbstractFactory* factory2 = new ConcreteFactory2();
Car* sedan = factory2->createCar();
Phone* iPhone = factory2->createPhone();
sedan->drive();
iPhone->call();
delete suv;
delete androidPhone;
delete factory1;
delete sedan;
delete iPhone;
delete factory2;
return 0;
}
C++抽象工厂模式代码
最新推荐文章于 2024-10-11 05:06:51 发布