c++之建造者模式

设计模式C++实现(6)——建造者模式 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大 阅读详情

建造者模式

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

属于创建型模式

代码:

#include <iostream>
#include <vector>
#include <iostream>

using namespace std;

//电脑产品
class Computer
{
public:
	void addPart(string p)
	{
		m_vecParts.push_back(p);
	}
	void showDetails()
	{
		cout << "电脑建造过程:" << endl;
		for (string x : m_vecParts)
		{
			cout << x.c_str() << endl;
		}
	}
private:
	vector<string> m_vecParts;
};

class Builder
{
public:
	virtual ~Builder(){}
	virtual void buildScreen() = 0;
	virtual void buildKeyboard() = 0;
	virtual Computer* getComputer() = 0;
};

class ConcreteBuilderA :public Builder
{
public:
	ConcreteBuilderA() :m_computer(nullptr)
	{
		m_computer = new Computer;
	}
	~ConcreteBuilderA()
	{
		if (m_computer)
		{
			delete m_computer;
			m_computer = nullptr;
		}
	}
	void buildScreen()
	{
		m_computer->addPart("电脑屏幕A");
	}
	void buildKeyboard()
	{
		m_computer->addPart("内设键盘A");
	}

	Computer* getComputer()
	{
		return m_computer;
	}

private:
	Computer *m_computer;
};

class ConcreteBuilderB :public Builder
{
public:
	ConcreteBuilderB() :m_computer(nullptr)
	{
		m_computer = new Computer;
	}
	~ConcreteBuilderB()
	{
		if (m_computer)
		{
			delete m_computer;
			m_computer = nullptr;
		}
	}
	void buildScreen()
	{
		m_computer->addPart("电脑屏幕B");
	}
	void buildKeyboard()
	{
		m_computer->addPart("内设键盘B");
	}

	Computer* getComputer()
	{
		return m_computer;
	}

private:
	Computer *m_computer;
};

class Director
{
public:
	void build(Builder *build)
	{
		build->buildScreen();
		build->buildKeyboard();
	}
};

//客户端
int main()
{
	Director *director = new Director;

	Builder *buildA = new ConcreteBuilderA;
	Builder *buildB = new ConcreteBuilderB;
	director->build(buildA);
	Computer *computerA = buildA->getComputer();
	computerA->showDetails();

	director->build(buildB);
	Computer *computerB = buildB->getComputer();
	computerB->showDetails();

	if (director)
	{
		delete director;
		director = nullptr;
	}
	if (buildA)
	{
		delete buildA;
		buildA = nullptr;
	}
	if (buildB)
	{
		delete buildB;
		buildB = nullptr;
	}

	return 0;
}

效果:

c++实现建造者模式完整源代码 c++实现建造者模式完整源代码BuilderPattern.hppmain.cpp BuilderPattern.hpp #ifndef __BUILDER_PATTERN__ #define __BUILDER_PATTERN__ #include <iostream> #include <string.h> using namespace std; // 产品类House class House { public: House() {} void setFloor(str 阅读详情

相关推荐

C++设计模式——Builder Pattern建造者模式

建造者模式,又被称为生成器模式,是一种创建型设计模式,它将复杂产品的构建过程分解为一系列简单的步骤,每个步骤由独立的建造者对象负责。建造者模式常用于创建复杂的对象,它避免了直接传递大量参数来构造函数,使得构建过程变得可控,让代码变得灵活和可维护。建造者模式允许开发者按照指定的步骤创建复杂对象,构建过程的细节被封装在具体建造者中,将创建对象的过程和表示对象的过程分离,且同一个构建过程可以使用不同的具体建造者以及不同的顺序来创建不同的表示。

程序员与背包客_CoderZ 2336

c++ 建造者模式

一、建造者模式 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建模式之一,用来隐藏复合对象的创建过程。他把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。 对象的创建:Builder模式是为了对象的创建而设计的模式-创建的是一个复合对象,被创建的对象为一个具有复合属性的复合对象,关注对象创建的各个部分的创建过程,不同工厂(Builder)对产品属性有不同的创建方法。 Builder:为创建产品各个部

qq_40754866的博客 3164

C++ 建造者模式

建造者模式(Builder Pattern),旨在将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

青春不老,奋斗不止! 1万+

C++设计模式:建造者模式(详解+案例代码)

主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。建造者模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。扩展性好,各个具体的建造者相互独立,有利于系统的解耦。控制细节风险,客户端无需详知细节,建造者细化创建过程。产品的组成部分必须相同,这限制了其使用范围。

ylh的博客 4181

C++建造者模式

头文件: #ifndef CBUILDERMODE_H #define CBUILDERMODE_H /* * 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 * 一段晦涩难懂的文字,实现创建不同表示的方法就是给创建的过程传入创建的参数。 CCarModel实现模板方法,Builder负责开始建造产品。建造产品时,构建的顺序由Director或main 决定。建造者模式和抽象工厂非常类似。建造者更重视产品建造时的逻辑顺序, 而抽象工厂更重视生产出不同型号的产品,抽

我不是码农的博客~~~ 464

C++实现建造者模式:深入浅出

在软件工程中,建造者模式(Builder Pattern)是一种创建型设计模式,用于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式主要用于创建那些结构复杂、包含多个步骤的对象。使用建造者模式,可以避免"直接使用构造函数"导致的参数过多、难以理解和维护的问题。建造者模式的关键在于将对象的构建逻辑封装在一个单独的建造者(Builder)组件中,由它来组织各个部件的创建和装配。建造者模式包含以下几个基本角色:指挥者(Director)

weixin_36197669的博客 514

C++ 设计模式——建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,它允许使用多个简单的对象一步步构建一个复杂的对象。建造者模式通过将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。

慢慢记录,慢慢更新。 2168

【STC8A8K64S4A12开发板】—学习PWM脉冲宽度调制

版权声明:本文为博主原创文章,转载请附上原文出处链接。 文章目录前言一、硬件设计1.PWM脉冲宽度调制介绍2.STC8A8K64S4A12系列单片机PWM介绍3.PWM配置步骤二、软件设计1.PWM寄存器汇集2.寄存器解析2.1.PWM配置寄存器PWMCFG2.2.PWM控制寄存器PWMCR2.3.PWM中断标志寄存器2.4.PWM外部异常控制寄存器2.5.PWM时钟选择寄存器2.6.PWM触发ADC计数器寄存器2.7.PWM2翻转寄存器2.8.PWMn控制寄存器2.9.PWMn电平保持控制寄存器3.PW

qq_36139768的博客 5216

【C++】—— 建造者模式

建造者模式详解

m0_56069910的博客 892

Synopsys Sentaurus TCAD新手教程:从零开始仿真trench MOSFET(附完整代码解析)

本文提供Synopsys Sentaurus TCAD新手教程,详细讲解从零开始仿真trench MOSFET的全过程,包括环境搭建、外延生长、沟槽刻蚀、栅极形成等关键步骤,并附完整代码解析。通过实际案例帮助半导体工程师掌握Sprocess操作技巧,优化工艺参数设置,提升仿真效率。

weixin_30505225的博客 217

单细胞测序流程(五)t-sne聚类分析和寻找marker基因

系列文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 本期主讲内容——t-sne聚类分析和寻找marker基因 介绍:T-SNE是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。 一、课前准备 之前所使用的数据 R语言的IDE 二、过程 聚类分析的目的是根据细胞的差别所进行细胞分群,两个..

qq_45478665的博客 2万+

【16】c++设计模式——>建造者(生成器)模式

这是一个接口,定义了创建产品所需的各个步骤的方法。3.

weixin_42097108的博客 1449

PX4从放弃到精通(十一):混控及PWM输出

文章目录前言一、混控脚本二、使用步骤1.引入库2.读入数据总结 前言 一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956 更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy 分享知识,传递正能量,如有疏漏或不当之处,恳请指出. 一、混控脚本 混控脚本定义了不同 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pand

超维空间科技的博客 1万+

C++设计模式——建造者模式(Builder Pattern)

C++设计模式——建造者模式(Builder Pattern) 微信公众号:幼儿园的学霸 目录 文章目录C++设计模式——建造者模式(Builder Pattern)目录定义代码示例总结建造者模式与抽象工厂模式的比较优缺点适用场景参考资料 定义 The intent of the Builder design pattern is to separate the construction of a complex object from its representation. By doing so

leonardohaig的博客 1347

【WRF理论第十五期】WPS中输入geogrid二进制格式

WPS中输入geogrid二进制格式

WW、forever的博客 1078

整理 钢琴 约翰·汤普森现代钢琴(大汤)

大汤

TS的博客 3996

建造者模式(Builder Pattern)C++

通过使用不同的建造者,我们可以构建具有不同属性的游戏角色,而无需直接操作复杂的构建过程。建造者模式将对象的构建过程和表示分离,使得我们可以更灵活地构建不同的对象,并且可以随时增加新的建造者类来扩展构建过程。通过以上示例,你可以看到建造者模式的应用。接下来,创建一个抽象建造者类CharacterBuilder,定义构建游戏角色的各个部分的方法,并声明一个返回最终产品的方法。最后,创建指导者类CharacterDirector,负责协调建造者的构建过程,按照特定顺序调用建造者的方法来构建游戏角色。

yaoyaohyl的博客 741

在 SAP 中,寄售业务(Consignment)与管道业务(Pipeline)都属于“物料先到、发票后到”的特殊采购模式,但两者的库存形态、物权转移时点、结算触发条件、系统配置完全不同

SAP中寄售业务与管道业务均属"先货后票"采购模式,但存在本质差异。寄售业务(如手机芯片)采用实物库存管理(标记"K"),物权在领用时转移,通过411K/201K移动类型触发负债;管道业务(如蒸汽)无实物库存,采用261P等移动类型直接消耗并生成应付。系统配置上,寄售需K类信息记录及GR收货,管道需P类信息记录且免GR。两者均通过MRKO汇总结算,但寄售按领用量计费,管道按提取量实时计费。核心区别在于库存形态与物权转移时点。

金牌架构师 555

C++ 设计模式:建造者模式(Builder Pattern)

C++ 设计模式:建造者模式(Builder Pattern)

冀晓武的博客 947

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++设计模式:建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

m0_73443478的博客 215

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++ 设计模式之建造者模式

每个组件可能有不同的型号、配置和制造,这个时候计算机就可以被视为⼀个复杂对象,构建过程相对复杂,⽽我们使⽤建造者模式将计算机的构建过程封装在⼀个具体的建造者类中,⽽指导者类则负责指导构建的步骤和顺序。同时有⼀个指导者类负责协调建造者的⼯作,按照⼀定的顺序或逻辑来执⾏构建步骤,最终⽣成产品。对应的,建造者模式适⽤于复杂对象的创建,当对象构建过程相对复杂时可以考虑使⽤建造者模式,但是当产品的构建过程发⽣变化时,可能需要同时修改指导类和建造者类,这就使得重构变得相对困难。

K1_uestc的博客 1349

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++建造者模式(Builder Pattern)

C++,设计模式,建造者模式

qq_34837838的博客 368

C++建造者模式进化论

难读、难用、易错、对可选参数不友好。

u013576331的博客 922

c++建造者模式

c++建造者模式简介优点缺点使用场景代码实例参考文章 简介 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这是建造者模式的标准表达,不过看着让人迷惑,什么叫构建和表示的分离?一个对象使用构造函数构造之后不就固定了,只有通过它方法来改变它的属性吗?而且还要同样的构建过程搞出不同的表示,怎么可能呢?多写几个构造函数? 其实多写几个构造函数,根据不同参数设置对象不同的属性,也可以达到这样的效果,只是这样就非常麻烦了,每次要增加一种表示就要添加一个构造函数,将来构造函数会多得

lvxu666的博客 255

C++ 建造者模式(Builder)

最近在学设计模式,对于建造者模式找了大量的资料,最后看到这篇文章写得比较通俗易懂(建造者模式及C++实现),本文在这篇文章的基础上进行学习。 1 核心 建造者模式适合于产品各个模块内建造过程多变,而各个模块相对的建造顺序稳定的情况。 建造者模式的类图如下: 2 具体实现 2.1 产品product 产品拥有三个参数para,有三个方法分别进行设置set,还有一个展示参数的方法show。 Prod...

weixin_42333471的博客 717
上一篇: c++之迭代器模式
下一篇: c++之装饰模式
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值