【设计模式】工厂模式

工厂模式

作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。


UML结构图:


抽象基类:
1) Product:创建出来的对象的抽象基类.
2) Factory创建对象的工厂方法的抽象基类.
接口函数:
l)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的Product.
解析:
在这个模式中,有两个抽象基类,一个是Product为创建出来的对象的抽象基类,一个是Factory是工厂的抽象基类,在互相协作的时候都是由相应的Factory派生类来生成Product的派生类,也就是说如果要新增一种Product那么也要对应的新增一个Factory,创建的过程委托给了这个Factory.也就是说一个Factory和一个Product是一一对应的关系.
备注:
设计模式的演示图上把Factory类命名为Creator,下面的实现沿用了这个命名.


代码实现:

//Factory.cpp
//factory模式演示
#include<iostream>
using namespace std;
class Product
{
public:
Product(){}
virtual ~Product(){}
};
class ConcreteProduct:public Product
{
public:
ConcreteProduct()
{ cout<<"construction of ConcreteProduct"<<endl; }
virtual ~ConcreteProduct()
{ cout<<"destruction of ConcreteProduct"<<endl; }
};
class Creator
{
public:
Creator(){}
virtual ~Creator(){}
void AnOperation()
{
Product* p = FactoryMethod();
cout<<"an operation of product"<<endl;
}
protected:
virtual Product* FactoryMethod()=0;
};
class ConcreteCreator:public Creator
{
public:
ConcreteCreator()
{ cout<<"construction of ConcreteCreator"<<endl; }
virtual ~ConcreteCreator()
{ cout<<"destruction of ConcreteCreator"<<endl; }
protected:
virtual Product* FactoryMethod()
{ return new ConcreteProduct(); }
};
int main()
{
Creator *p = new ConcreteCreator();
p->AnOperation();
delete p;
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值