c++ 设计模式之创建者(生成器)模式

个人感觉这个模式,使用的应该较少,主要应用于流程性的东西,创建者负责构建一个对象的各个部分,并且完成组装的过程,可以这么理解,创建者模式类似与一个步骤基本固定,但是每个步骤的具体形式却又可以变化的这类对象的创建。废话不多说了,进入我们的创建者模式。

意图:

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

适用性:

1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时

2、当构造过程必须允许被构造的对象有不同的表示时

使用创建者模式的基本方法:

1、需要抽象出一个基类,所有的对象创建时,都继承自这个基类创建。

2、需要创建一个调用的导演,由它来多态到不同的表现。(它并不继承自那个抽象基类,而是存储一个抽象基类的指针,类似多态)。

3、各个具体对象实例化基类的接口

看一个创建者模式的基本结构例子,本例子从http://www.cppblog.com/converse/archive/2006/07/21/10305.html,整理,仅供学习使用:

builder.h

//设计模式之builder模式
/*
作用:将一个复杂对象的构建与它的表示分离,使同样的构建过程创建不同的表示
*/
//虚拟基类,所有builder的基类,提供不同部分的构建接口
class builder
{
public:
	builder(){};
	virtual ~builder(){};

	//提供构建接口
	virtual void builderA() = 0;
	virtual void builderB() = 0;
};

//使用builder构建产品,构建产品的过程都一致,但是不同的builder会有不同的表现
//这个不同的实现通过不同的builder派生类来实现,存有一个builder的指针,多态调用
class director
{//
public:
	director(builder *pbuilder);
	virtual ~director();

	void construct();
private:
	builder *pBuilder;
};
//具体实例化各个建造者
class concretebuilder1:public builder
{
public:
	concretebuilder1(){}
	virtual ~concretebuilder1(){}
	virtual void builderA();
	virtual void builderB();
};
//具体实例化各个建造者
class concretebuilder2:public builder
{
public:
	concretebuilder2(){}
	virtual ~concretebuilder2(){}

	virtual void builderA();
	virtual void builderB();
};
<
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值