UML圖:

意圖:
定義一個用于創建對象的接口,讓子類決定實例化哪一個類,使一個類的實例化延遲到子類
適用:
當一個類不知道它必須創建的對象的類的時候
當一個類希望它的子類來指定它所創建的對象的時候
當一個類容易改變或添加新的功能的時候
#include "stdafx.h"
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////
class Product
{
public:
Product(){}
virtual ~Product(){}
};
//產品1
class Product1 : public Product
{
public:
Product1() {}
virtual ~Product1(){}
};
//產品2
class Product2 : public Product
{
public:
Product2() {}
virtual ~Product2(){}
};
//工廠類
class Creator
{
public:
Creator(){}
virtual ~Creator(){}
Product* CreateProduct1();
Product* CreateProduct2();
protected:
virtual Product* FactoryMethod1();
virtual Product* FactoryMethod2();
};
//////////////////////////////////////////////////////////////////////////
Product* Creator::FactoryMethod1()
{
return new Product1;
}
Product* Creator::FactoryMethod2()
{
return new Product2;
}
Product* Creator::CreateProduct1()
{
Product *p = FactoryMethod1();
cout<< "an CreateProduct of product\n";
return p;
}
Product* Creator::CreateProduct2()
{
Product *p = FactoryMethod2();
cout<< "an CreateProduct of product\n";
return p;
}
///////////////////////////////////////////////////////////////////////////
int _tmain(int argc, char* argv[])
{
Creator *pCreator =(Creator*) new Creator();
Product *pProduct1 = pCreator->CreateProduct1(); //生產類1
Product *pProduct2 = pCreator->CreateProduct2(); //生產類2
delete pCreator;
delete pProduct1;
delete pProduct2;
system("pause");
return 0;
}
posted on 2008-08-16 12:13
黑色天使 閱讀(235)
評論(0) 編輯 收藏 引用 所屬分類:
設計模式