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
黑色天使 阅读(228)
评论(0) 编辑 收藏 引用 所属分类:
设计模式