您的位置:首页 > 其它

设计模式:Factory模式

2016-05-10 23:42 369 查看
Factory模式,即工厂模式,其为解决如下两个问题而生:

1· 定义创建对象的接口,封装了对象的创建;

2· 将实例化对象的动作延迟到子类中进行。

Demo如下

//product.h
class Product
{
public:
virtual ~Product() = 0;
Protected:
Product();
};

class ConcreateProduct : public Product
{
public:
ConcreateProduct();
~ConcreateProduct();
};

//product.cpp
Product::Product()
{}
Product::~Product()
{}

ConcreateProduct::ConcreateProduct()
{
cout<<"ConcreateProduct..."<<endl;
}
ConcreateProduct::~ConcreateProduct()
{}

//Factory.h
class Product;
class Factory
{
public:
virtual ~Factory() = 0;
virtual Product* CreateProduct() = 0;
protected:
Factory();
};

class ConcreateFactory : public Factory
{
public:
//重写基类虚函数
~ConcreateFactory();
ConcreateFactory();
Product* CreateProduct();
};

//Factory.cpp
Factory::Factory()
{}
Factory::~Factory()
{}

ConcreateFactory::ConcreateFactory()
{
cout<<"ConcreateFactory..."<<endl;
}
ConcreateFactory::~ConcreateFactory()
{}
Product* ConcreateFactory::CreateProduct()
{
return new ConcreateProduct();
}

//testDemo.cpp
int main()
{
Factory* fac = new ConcreateFactory();
Product* pro = fac->CreateProduct();

getchar();
return 0;
}

如上代码中,通过CreateProduct()接口创建子类对象.
举一反三,当有多个***Product时,只需要在Factory类中添加相应代码Create***Product(),然后实现之,即可通过fac->Create**Product()实例化对应的***Product了
运行结果:
ConcreateFactory...
ConcreateProduct...


参考:<设计模式精解-GoF23中设计模式解析>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息