狂想的天空

狂想,只要你想!

C++博客 首页 新随笔 联系 聚合 管理
  21 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks
作用:
定义一个创建对象的接口,让子类决定实例化哪一个类;
工厂模式使一个类的实例化延迟到子类。

代码如下:
#pragma once

#ifndef INCLUDE_MYFACTORY_H
#define INCLUDE_MYFACTORY_H

//商品抽象基类
class ProductCL  
{
protected:
    ProductCL(){};
public:
    
virtual ~ProductCL()=0;
};

//商品实做类
class ConcreteProductCL :public ProductCL
{
public:
    ConcreteProductCL(){};
    
virtual ~ConcreteProductCL(){};

};

//工厂抽象基类
class FactoryCL
{
protected:
    FactoryCL(){};
public:
    
~FactoryCL(){};
public:
    ProductCL 
*GetProduct()
    {
        
return CreateProduct();
    };

public:

    
virtual ProductCL *CreateProduct() = 0;//
};

//工厂实做类
class ConcreteFactoryCL:public FactoryCL
{
public:
    ConcreteFactoryCL(){};
    
~ConcreteFactoryCL(){};
public:
    ProductCL 
*CreateProduct()
    {
        
return new ConcreteProductCL();
    };
};


#endif


在这个模式中,有两个抽象基类:
一个是ProductCL,对象的抽象基类;
一个是FactoryCL,工厂的抽象基类.
在互相协作的时候都是由相应的FactoryCL派生类来生成ProductCL的派生类,
也就是说如果要新增一种Product那么也要对应的新增一个Factory.
创建的过程委托给了这个Factory.
也就是说一个Factory和一个Product是一一对应的关系.


posted on 2009-05-04 23:08 狂之想 阅读(390) 评论(0)  编辑 收藏 引用 所属分类: C++设计模式

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


//