您的位置:首页 > 产品设计 > UI/UE

设计模式--创建型- Builder(生成器/创建者)

2014-03-23 00:46 197 查看
 

 

 

设计模式--创建型- Builder(生成器/创建者)
 

 

 

1.意图

 

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

 

 

2.结构图

 



 

 

 

3. 简述

 

建造者/生成器模式是一步步构造一个复杂的产品,最终通过类似GetResult()的方法得到最终产品。而抽象工厂是立即返回一个系列的多个简单的产品对象,在外部构建成一个复杂的产品对象。所以Builder模式不会向外暴露出很多产品类,而只要向外提供最终的复杂产品类即可。

 

 

4.实例代码

 

4.1  对外接口,给客户Client使用

 

// 一个复杂的产品
class Product
{
public:
virtual ~Product(){}
};

// 建造者
class Builder
{
public:
Builder() {}
virtual ~Builder(){}

virtual void BuildPartA() {}
virtual void BuildPartB() {}
virtual void BuildPartC() {}
};

// 导向器
class Director
{
Builder _builder;

public:
Director( Builder&builder )
:_builder(builder){}
virtual ~Director(){}

virtual void Construct()
{
_builder.BuildPartA();
_builder.BuildPartB();
_builder.BuildPartC();
}
};


 
 
 

 

4.2 客户Client程序

 

实现一个具体的Builder

 

class ConcreteBuilder: public Builder
{
Product* _product;

public:

ConcreteBuilder() {}
~ConcreteBuilder() {}

void BuildPartA(){ /*The first step*/ }
void BuildPartB(){ /*The second step*/ }
void BuildPartC(){ /*The third step*/ }

Product* GetResult(){ return _product;}
};

int main()
{
// new ConcreteBuilder
ConcreteBuilder builder;

// new Director
Director director(builder);

// Construct
director.Construct();

// Get result
builder.GetResult();
}


 
 
 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: