#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;
}