抽象工廠模式舉例

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章