文档章节

设计模式-创建-Builder(建造者)模式

梦想游戏人
 梦想游戏人
发布于 2016/05/02 12:16
字数 278
阅读 28
收藏 0

目的:当对象的构造很复杂,分为好几部分的时候,可以用建造者模式来处理


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

通常把一个复杂对象构建分为几个部分 BuildPartA B C..... 

Builder模式有以下几个角色

Builder: 规定一些接口

ConCreateBuilder:Builder 的实现

Director:负责具体的装配调用

版本1:

class Procudt
{
public:
	void initPartA(){}
	void initPartB(){}
	void Print(){ cout << __FUNCTION__ << endl; }
};




class Builder
{
public:
	virtual void BuildPartA() = 0;
	virtual void BuildPartB() = 0;
	virtual Procudt* GetProduct() = 0;

};

class ConCreateBuilder :public Builder
{
	Procudt *product;

public:
	virtual void BuildPartA()override
	{
		cout << __FUNCTION__ << endl;
		product->initPartA();
	}
	virtual void BuildPartB()override
	{
		cout << __FUNCTION__ << endl;
		product->initPartB();
	}

	Procudt * GetProduct()override
	{
		return product;
	}
};



class Director
{
public:
	Director(Builder *builder)
	{
		_builder = builder;
	}
	void Construct()
	{
		_builder->BuildPartA();
		_builder->BuildPartB();
	}
	Builder* _builder;

};

int main(int argc, char *argv[])
{
	ConCreateBuilder* builder = new ConCreateBuilder;


	Director* director = new Director(builder);

	director->Construct();
	builder->GetProduct()->Print();


	system("pause");
	return 0;
}

版本2:

class Director
{
public:

	Builder* Construct(Builder *_builder)
	{
		_builder->BuildPartA();
		_builder->BuildPartB();
		return _builder;
	}

};

int main(int argc, char *argv[])
{
	ConCreateBuilder* builder = ;


	Director* director = new Director();

	Builder *builder = director->Construct(new ConCreateBuilder);
	builder->GetProduct()->Print();


	system("pause");
	return 0;
}
//Director 只是一个 组装


© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 38
博文 444
码字总数 127453
作品 0
成都
私信 提问
设计模式(Swift) - 3.观察者模式、建造者模式

上一篇 设计模式(Swift) - 2.单例模式、备忘录模式和策略模式中讲了三种常见的设计模式. 单例模式: 限制了类的实例化,一个类只能实例化一个对象,所有对单例对象的引用都是指向了同一个对象....

Dariel
2018/07/01
0
0
设计模式8——Builder设计模式

Builder建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就...

小米米儿小
2013/12/11
0
0
设计模式快速学习(四)建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。将一个复杂的构建与其表示相分离,使...

微笑面对Life
2018/08/15
0
0
23种设计模式(4):建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 类图: 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂...

LCZ777
2014/07/05
0
0
初探Java设计模式1:创建型模式(工厂,单例等)

Java 设计模式 转自https://javadoop.com/post/design-pattern 一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写...

你的猫大哥
2017/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

指针数组和数组指针的区别

这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。 指针数组:arr...

天王盖地虎626
17分钟前
0
0
Qt那些事0.0.18

今天要记一下Qt中的Resource。自我感觉理解的不错,但是还会难免有谬误,在日后有可能会更新,也有可能不会。 小声的念叨一句,女人心,海底针。 今天就直接跳过了关于QML在qrc文件中的介绍,...

Ev4n
25分钟前
0
0
深入解析js的作用域、预解析机制

虽然,ES6在我们工作中应用得越来越广泛,但是还是很多项目保留着ES5的写法,所以,今天,带着大家重新巩固下ES5下的作用域及预解析机制。 概念: 作用域:域,指的是一个空间、范围、区域,...

前端攻城老湿
28分钟前
0
0
Spring Cloud Feign - 声明式 REST Client

1、Feign是什么 声明式REST client,来自NetFlix。 允许你编写无实现代码调用REST services 替换RestTemplate(甚至更简单) Spring Cloud 为使用Feign提供了包装器 2、怎样使用Feign 对比:...

Benz001
33分钟前
0
0
前端、后端和全栈到底不该学什么

1、前言 在职业规划咨询过程中经常会被问到这样的问题: 老师,我是该深入钻研专精一门,走技术大牛路线,还是所有都要精通,做一个全栈工程师? 类似问题的变种还有,老师我是不是该30岁最迟...

前端攻城小牛
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部