蜗牛的家
男儿当自强
posts - 48,  comments - 21,  trackbacks - 0
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 
*= FactoryMethod1();
    cout
<< "an CreateProduct of product\n";
    
return p;
}
Product
* Creator::CreateProduct2()
{
    Product 
*= 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 黑色天使 阅读(229) 评论(0)  编辑 收藏 引用 所属分类: 设计模式

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理



<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜