#include<iostream>
using namespace std;
//抽象产品类
class Product
{
public:
Product(){}
~Product(){}
virtual void OperateProduct() = 0;
};
//实际产品car
class car:public Product
{
public:
car(){}
~car(){}
virtual void OperateProduct()
{
cout<<"car run"<<endl;
}
};
//实际产品bike
class bike:public Product
{
public:
bike(){}
~bike(){};
virtual void OperateProduct()
{
cout<<"bike run"<<endl;
}
};
//抽象工厂
class Factory
{
public:
Factory(){}
virtual ~Factory(){}
virtual Product* CreateProduct() = 0;
};
//制造car的工厂
class CarFactory:public Factory
{
public:
CarFactory(){}
~CarFactory(){}
virtual Product* CreateProduct()
{
cout<<"create car"<<endl;
car* p = new car();
return p;
}
};
//制造bike的工厂
class BikeFactory:public Factory
{
public:
BikeFactory(){}
~BikeFactory(){}
virtual Product* CreateProduct()
{
cout<<"create Bike"<<endl;
bike* p = new bike();
return p;
}
};
void main()
{
//创建需要生产产品的真实工厂
Factory* pFactory = new BikeFactory();
//工厂生产产品
Product* pProduct = pFactory->CreateProduct();
//产品做自己的事情
pProduct->OperateProduct();
delete pFactory;
delete pProduct;
//创建需要生产产品的真实工厂
pFactory = new CarFactory();
//工厂生产产品
pProduct = pFactory->CreateProduct();
//产品做自己的事情
pProduct->OperateProduct();
delete pFactory;
delete pProduct;
}