C++设计模式-生成器(Builder)

这篇具有很好参考价值的文章主要介绍了C++设计模式-生成器(Builder)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

C++设计模式-生成器(Builder)

一、意图

二、适用性

三、结构

四、参与者

五、代码


C++设计模式-生成器(Builder)

一、意图

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

二、适用性

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

三、结构

 C++设计模式-生成器(Builder),设计模式(C++),c++,开发语言,设计模式

四、参与者

  • Builder

       为创建一个Product对象的各个部件指定抽象接口。

  • ConcreteBuilder

        实现Builder的接口以构造和装配该产品的各个部分。

        定义并明确它所创建的表示。

        提供一个检索产品的接口。

  • Director

        构造一个使用Builder接口的对象

  • Product

        表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

        包含定义组成部件的类,包括将这些部件装配成最终产品的接口。文章来源地址https://www.toymoban.com/news/detail-728345.html

五、代码

#include<iostream>
using namespace std;

class Product {
public:
	void SetPartOne(string TempPartOne) {
		PartOne = TempPartOne;
		cout << "Set Part One: " << PartOne << endl;
	}
	void SetPartTwo(string TempPartTwo) {
		PartTwo = TempPartTwo;
		cout << "Set Part Two: " << PartTwo << endl;
	}
	void SetPartThree(string TempPartThree) {
		PartThree = TempPartThree;
		cout << "Set Part Three: " << PartThree << endl;
	}
private:
	string PartOne;
	string PartTwo;
	string PartThree;
};

class Builder {
public:
	Product GetProduct() {
		return product;
	}
	virtual void BuildPartOne() = 0;
	virtual void BuildPartTwo() = 0;
	virtual void BuildPartThree() = 0;
protected:
	Product product;
};

class ProductOneBuilder : public Builder {
public:
	void BuildPartOne() {
		product.SetPartOne("Product One's Part One");
	}
	void BuildPartTwo() {
		product.SetPartTwo("Product One's Part Two");
	}
	void BuildPartThree() {
		product.SetPartThree("Product One's Part Three");
	}
};

class ProductTwoBuilder : public Builder {
public:
	void BuildPartOne() {
		product.SetPartOne("Product Two's Part One");
	}
	void BuildPartTwo() {
		product.SetPartTwo("Product Two's Part Two");
	}
	void BuildPartThree() {
		product.SetPartThree("Product Two's Part Three");
	}
};

class Director {
public:
	Director() :builder(nullptr) {}
	void SetBuilder(Builder* TempBuilder) {
		this->builder = TempBuilder;
	}
	Product ConstructProduct() {
		builder->BuildPartOne();
		builder->BuildPartTwo();
		builder->BuildPartThree();
		return builder->GetProduct();
	}
private:
	Builder* builder;
};

int main() {

	Builder* builder;
	Director* director = new Director;
	Product product;

	cout << "*** *** Construct Product One *** ***" << endl;
	builder = new ProductOneBuilder;
	director->SetBuilder(builder);
	product = director->ConstructProduct();
	delete builder;

	cout << "*** *** Construct Product Two *** ***" << endl;
	builder = new ProductTwoBuilder;
	director->SetBuilder(builder);
	product = director->ConstructProduct();
	delete builder;

	delete director;

	return 0;
}

到了这里,关于C++设计模式-生成器(Builder)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式之构建器(Builder)C++实现

    在软件功能开发中,有时面临“一个复杂对象”的创建工作,该对象的每个功能接口由于需求的变化,会使每个功能接口发生变化,但是该对象使用每个功能实现一个接口的流程是稳定的。构建器就是解决该类现象的。构建就是定义一个抽象类,然后将变化的每个功能接口定

    2024年02月12日
    浏览(28)
  • 建造者模式(生成器模式)

    依赖倒转原则 = 抽象不应该依赖细节,细节应该依赖于抽象 对流程进行抽象,流程中具体细节依赖于这个抽象 过程是稳定的,细节是不同的 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 建造者模式解析 Director:指挥者,是

    2024年04月15日
    浏览(28)
  • [go] 生成器模式

    生成器模式建议将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中。 生成器 (Builder) 接口声明在所有类型生成器中通用的产品构造步骤。 具体生成器 (Concrete Builders) 提供构造过程的不同实现。 具体生成器也可以构造不遵循通用接口的产品

    2024年01月24日
    浏览(30)
  • 【C++】狗屁不通文章生成器2.0

    继上次【C++】狗屁不通文章生成器之后,很久不想看一眼这个代码,因为当时写这个代码深受中文字符的处理烦恼。而且现在回看,程序的模块化、可读性使我大受震惊,是在想不到当时的我为什么要这样做。于是昨天无心工作,想到了把这堆乐色改进一下,至少做到能看的

    2024年04月12日
    浏览(25)
  • 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)

    现如今,数据的唯一性和可追溯性变得越来越重要。从简单的数据库主键到复杂的分布式系统,唯一标识符在各种场景中都发挥着关键作用。序列号,作为一种广泛应用的唯一标识符,为我们提供了确保数据完整性和一致性的基础。在这个背景下,高效、可靠的序列号生成器

    2024年02月03日
    浏览(45)
  • 设计模式-构建者(Builder)模式详解

    在创建一个对象的时候,你是否是酱紫写: 上面的写法虽然效率高,但也有一些不足,对于代码后期维护和协同开发会是一件很痛苦的事情。 再看看别人是酱紫写的:  是不是很优雅,而且在很多框架中也能看到这样写的身影。没错这就是接下来要讲的构建者模式,这样好处

    2024年02月11日
    浏览(34)
  • 设计模式--建造者模式(Builder Pattern)

    建造者模式(Builder Pattern)是一种创建型设计模式,它关注如何按照一定的步骤和规则创建复杂对象。建造者模式的主要目的是将一个复杂对象的构建过程与其表示分离,从而使同样的构建过程可以创建不同的表示。 在建造者模式中,通常有以下几个核心角色: 产品(Prod

    2024年02月11日
    浏览(28)
  • 设计模式|建造者模式(Builder Pattern)

    建造者模式(Builder Pattern)是一种创建型设计模式,用于将一个复杂对象的构建过程与其表示分离,以便可以使用相同的构建过程创建不同的表示。 Builder(建造者)接口或抽象类 : 定义了构建对象的各个步骤的方法。 ConcreteBuilder(具体建造者)类 : 实现了 Builder 接口或继

    2024年04月15日
    浏览(48)
  • 设计模式——建造者模式(Builder Pattern)

    概述        建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建

    2024年01月20日
    浏览(40)
  • 『造轮子』亿级短URL生成器的架构设计及源码分享

    📣读完这篇文章里你能收获到 了解博主的短链生成的架构设计思路 学习不同的短链技术方案选择 学习基于混淆的自增短URL算法 了解博主造的轮子SuperShortLink短链开源项目 感谢点赞+收藏,避免下次找不到~ 短 URL 生成器,也称作 短链接生成器 ,就是将一个比较长的 URL 生成

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包