Anywhere

水中苇
随笔 - 28, 文章 - 3, 评论 - 0, 引用 - 0
数据加载中……

Builder模式

Builder模式:将一个复杂对象的构建与它的表示相分离.使得同样的构建过程可以创建不同的表示.一般情况下,且对象不是直接返回的...
定义:
先定义一个要构建的类:
class Product
{
public:
     Product();
    ~Product();
    void  ProducePart();
};
class ProductPart//定义组成Product的部分.
{
   ProductPart();
     ~ProductPart();
    ProducePart *BuildPart();
};
然后创建一个Builder抽象类.
class builder
{
  public:
       ~builder();
       virtual void ProducePartA(部分一);
       virtual void ProducePartB(部分二);
       virtual void ProducePartC(部分三);
       ...
      virtual Product * GetProduct()=0;
protected:                        //在主函数中一般不直接构造实例....比如:builder *p=new builder..
        Builder();
private:
};
3.定义一个生产具体对象的子builder
class childBuilder:public builder
{
   public:
      childBuilder();
     ~childBuilder();
     void BuildPartA();  /*****buildPartX()---start*********/
                                               生产过程
    ....                          /*****buildPartX()---end*********/
   Product *GetProduct();                        //返回生成的实例.....
};
4 定义一个类来实现某一产品对象的构造过程
class con
{
  public:
      Director(builder *bldr);
      ~Director();
     void produce()         //构造产品.
       {
            BuildPartA();
           BuildPartB();
          .....
       }
protected;
private:
     Builder *_bldr;//通过_bldr来调用生产过程,完成对象的实现过程.
  
};
总结及讨论:builder模式似乎注重构建的过程,不需要返回构建的产品.如果想返回产品的话,可以在con中添加一个Product的指针.然后将该指针作为buildPart函数的参数..来完成product的构建,然后添加一个返回product的指针的函数得到该product.
或者在childbuilder中添加一个属性,为product *类型.然后通过GetProduct()得到该Prodcut.

posted on 2009-07-20 08:59 三水寿 阅读(757) 评论(0)  编辑 收藏 引用 所属分类: 设计模式学习笔记----创建模式


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