UML圖:

意圖:
定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類,使一個(gè)類的實(shí)例化延遲到子類
適用:
當(dāng)一個(gè)類不知道它必須創(chuàng)建的對(duì)象的類的時(shí)候
當(dāng)一個(gè)類希望它的子類來(lái)指定它所創(chuàng)建的對(duì)象的時(shí)候
當(dāng)一個(gè)類容易改變或添加新的功能的時(shí)候
#include "stdafx.h"
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////
class Product
{
public:
Product(){}
virtual ~Product(){}
};
//產(chǎn)品1
class Product1 : public Product
{
public:
Product1() {}
virtual ~Product1(){}
};
//產(chǎn)品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(); //生產(chǎn)類1
Product *pProduct2 = pCreator->CreateProduct2(); //生產(chǎn)類2
delete pCreator;
delete pProduct1;
delete pProduct2;
system("pause");
return 0;
}
posted on 2008-08-16 12:13
黑色天使 閱讀(241)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
設(shè)計(jì)模式