【设计模式】建造者模式

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

    建造者模式也属于创建型模式,定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。客户端在使用时,只需要指定复杂对象的类型,无需知道构建细节,就可以生成一个复杂的对象,UML图:
在这里插入图片描述
UML图中的角色介绍
    Bulider:抽象创建角色,包含两类抽象方法,bulidX(创建对象的组成部分),getresult(返回创建好的对象),由具体的建造者继承后实现。
    ConcreteBulider:具体的创建者,继承自Builder,实现抽象方法,明确自己要创建的对象,创建该产品的内部表示并定义它的装配过程。
    Director:指挥者,和客户端进行交互,它包含建造者成员,提供建造函数调用建造者对象的部件构造方法,完成对象的组建。
    Product:产品角色,最终生成的产品对象,它是一个复杂对象,包含多个成员属性。
代码体现:

//抽象创建角色
class Bulider
{
public:
    Product product;
    virtual void BulidA()=0;
    virtual void BulidB()=0;
    virtual void BulidC()=0;
    Product* getresult()
    {
        return product;
    }
};
//具体创建者
class ConcreteBulider
{
public:
    void BulidA()
    {
        std::string a = "苗条";
        product.setA(a);
        cout<<"制作了角色身材"<<endl;
    }
    void BulidB()
    {
        product.setB("温柔");
        cout<<"制作了角色长相"<<endl;
    }
    void BuildC()
    {
        product.setC("齐胸襦裙");
        cout<<"制作了角色服装"<<endl
    }
};
//指挥者
class Director
{
public:
    Director()
    {}
    ~Director()
    {}
    void setBulider(Bulider* build)
    {
        bulider=bulid;
    }
    Product* construct()
    {
        bulider->bulidA();
        bulider->bulidB();
        builder->bulidC();
        return builder->getresult();
    }
pirvete:
    Bulider* bulider;    
}
//产品
class Product
{
public:
    void setA(std::string a)
    {
       A = a;
       cout << "设置角色身材为a"<<endl;
    }
    //剩下的set和get不写了...
    void show()
    {
        cout<<"我是被创建出来的游戏角色"<<endl;
    }
private:
    std::string A;
    std::string B;
    std::string C;
};
//客户端的使用
int main()
{
    Bulider* bulider = new ConcreteBulider();
    Direct direct;
    direct.setBulider(bulider);
    Product* pro = direct->construct();
    pro->show();
    return 0;
}

    以上代码简单创建出了一个游戏角色,创建者模型是比较适用于这种对象由多个部分组成的场景下的。下面分析优缺点和适用场景。
优点:
    1.客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
    2.每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。由于指挥者类针对抽象建造者编程,增加新的具体建造者无须修改原有类库的代码,系统扩展方便,符合“开闭原则”。
    3.可以更加精细地控制产品的创建过程。将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,也更方便使用程序来控制创建过程。
缺点:
    1.适用范围有一定限制,所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,例如很多组成部分都不相同,不适合使用建造者模式
    2.如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大,增加系统的理解难度和运行成本。
适用场景:
    1.被创建对象内部有复杂的内部结构,包含多个成员属性(这些属性需要按照一定顺序被创建)
    2. 对象的创建过程独立于创建该对象的类。在建造者模式中通过引入了指挥者类,将创建过程封装在指挥者类中,而不在建造者类和客户类中。
    3. 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。
模式扩展:
    如果系统中只需要一个具体建造者的话,可以省略抽象建造者,省略抽象建造者之后,也可省略指挥者,具体建造者扮演指挥者与建造者双重角色。

Virtual Hard Disk version 2 (VHDX) 文件格式详解 VHDX 镜像格式详解 0. References windows github 1. Overview Microsoft 虚拟化产品中常用的映像格式是虚拟硬盘版本 2 (VHDX) 映像格式。该规范基于可用文档,并通过分析测试数据进行了增强。 VHDX 镜像格式种类 固定硬盘镜像 动态硬盘镜像 差异硬盘镜像 VHDX 镜像文件由以下元素构成: file (type) identifier 2x image headers 2x region tables log or metadata journ 阅读详情

相关推荐

易灵思Trion FPGA实战:5分钟搞定MIPI硬核配置(附Interface Designer避坑指南)

本文详细介绍了易灵思Trion FPGA中MIPI硬核的快速配置方法,通过Interface Designer工具实现从时钟配置到数据收发的全流程实战。特别针对初次接触Trion系列的设计师,提供了六个关键配置陷阱及解决方案,帮助开发者高效完成嵌入式视觉和高速数据传输项目。

eee77的博客 784

设计模式—建造者模式及实例(BuilderPattern)

建造者模式(Builder Pattern)也称生成器模式,它属于创建型模式。

小嵩的博客 4001

汽车氛围灯 PCBA 方案开发:从技术底层解析车载光效的核心逻辑

摘要: 车载氛围灯PCBA方案开发需兼顾性能与车规要求。主控芯片选型应关注运算能力、温度适应性和低功耗(如NXPS32K344、复旦微FM33FG065A)。电路防护需采用TVS二极管等组合设计,满足ISO7637-2浪涌防护标准。通信协议分层应用(CAN+LIN),调光需解决色准与温漂问题,动态灯效通过FIFO队列实现。开发中需进行温度循环、振动、EMC等可靠性测试,细节处理(如三防涂覆)至关重要。该领域开发需熟悉车规标准并积累实车经验。

2401_87454052的博客 1130

【设计模式】Java 设计模式之建造者模式(Builder Pattern)

建造者模式是一种强大的设计模式,它通过抽象化对象的构建过程,提高了代码的可读性、可维护性和可扩展性。该模式适用于需要创建复杂对象且创建过程需要灵活调整的场景。通过定义建造者接口和指挥者类,我们可以将对象的构建逻辑与使用逻辑分离,使得代码更加清晰和易于维护。此外,建造者模式还支持创建多种表示的产品,增强了系统的灵活性。在实际应用中,我们可以根据需求选择合适的建造者模式变种和扩展应用方式,如带有默认值的建造者或链式调用的建造者。未来,随着软件系统的复杂度增加,建造者模式的应用将更加广泛,我们需关注其性能问题和设

新手村长的专栏 4594

SystemC实战:用C++搞芯片建模的5个典型场景(含代码示例)

本文通过五个典型实战场景,详细介绍了如何使用SystemC这一基于C++的硬件建模库进行芯片设计与系统级建模。内容涵盖从基础并发模块构建、事务级总线建模、跨时钟域验证,到与ModelSim协同仿真及多核系统性能探索,并提供了完整的代码示例,帮助软件工程师利用熟悉的C++工具链高效参与硬件架构设计与验证。

weixin_29191761的博客 313

zynq 7010/020 AMP双核通信-Vitis2023/2024

在platform cpu1设置中添加;注意value中使用空格分开程序思路:比较简单。

weixin_43310175的博客 915

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

Java 设计模式——建造者模式(Builder Pattern) 一.简介 1.定义 将一个复杂对象的构建与它表示分离,使用同样的构建过程可以创建不同的表示 2.主要作用 在用户不知道对象建造过程和细节的情况下就可以直接创建复杂对象 3.如何使用 用户只需给出指定复杂对象的类型和内容,建造者模式负责按顺序创造对象(把内部建造过程和细节隐藏起来) 4.解决的问题 (1).方便用户创建复杂的对...

a158s168的博客 275

手把手调试Android 10 DHCP服务:从dumpsys network_stack到DhcpServer.java的实战技巧

本文详细介绍了在Android 10中调试DHCP服务的实战技巧,从使用dumpsys network_stack分析服务状态到深入DhcpServer.java源码追踪问题。文章提供了完整的工具链配置、关键调试命令和常见问题解决方案,帮助开发者高效解决DHCP服务未启动、IP分配失败等典型问题,特别适合需要深入理解Android网络架构的开发者参考。

uu89012的博客 740

23种设计模式之建造者模式(Builder Pattern)

本篇文章将23种设计模式中的建造者模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

Huber损失函数中的阈值δ是如何确定的?

Huber损失函数通过阈值δ将误差划分为两部分:当误差小于等于δ时,采用平方损失(MSE),以保持对小误差的敏感性;当误差大于δ时,采用线性损失(MAE),以降低异常值对模型的影响。

百态·数智思维 | 聚焦大数据、量化与未来AI 1925

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

Robot_PLC_HMI_Automation 3154

设计模式之建造者模式(Builder Pattern)

意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。何时使用:一些基本部件不会变,而其组合经常变化的时候。如何解决:将变与不变分离开。关键代码:建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。

weixin_42294716的博客 1315

【电机应用控制】——直流有刷电机&驱动板/编码器介绍&PID算法&实操代码思路

声明:学习笔记来自正点原子B站教程,仅供学习交流!!玩具车、平衡车、无人机、印刷机、打印机、手机振动马达等电机即电动机(motor),也叫作马达,电能转化为机械能。按电源:直流、交流按用途:驱动用、控制用按运转速度:高速、低速、恒速、调速直流电机(有刷、无刷)、舵机、步进电机、伺服电机1、直流有刷电机(Brushed DC Motor,简称BDC)是内含电刷装置的将直流电能转化为机械能的电动机。例如四驱赛车四个马达操控方便、成本低、维护时换电刷即可;

weixin_51658186的博客 2万+

彻底搞懂设计模式DesignPattern-建造者模式

基本介绍 建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们, 用户不需要知道内部的具体构建细节。 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。 方便用户创建复杂的对象(不需要知道实现过程) 代码复用性 & 封装性(将对象构建过程和细节进

Ping 420

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java设计模式|建造者模式Builder Pattern

Java设计模式|建造者模式Builder Pattern 前言: 在日常生活中,我们可能会遇到这一类型的需求,例如一个实体类里有很多个属性,但是我们只想要其中的几种组合成一个新的对象,这个时候就可以使用建造者模式了,它提供了一种创建对象的最佳方式。建造者模式虽然比较好用,但是大家平时写代码的时候要谨记,不要滥用设计模式,不然的话可能会适得其反啊! 建造者模式 介绍:建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建与它

QAQFyl的博客 546

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

设计模式之建造者模式(BuilderPattern)

一.意义 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 说明:复杂对象的构建,比如一个对象有几十个成员属性,那么我们在创建这个对象,并给成员属性赋值时,就会很麻烦。采用建造者模式,就是把创建对象并给成员属性赋值的工作,分离出来,由建造者角色来完成,业务程序员直接调用导演类,获得复杂对象即可,无需再进行对象的创建工作了。 二.角色 建造者模式涉及到一下几种角色: Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方

敲代码的小小酥的博客 414

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android常见设计模式——建造者模式(Builder Pattern)

文章目录1. 建造者模式2. 建造者模式的简单案例 在23种常见设计模式概述——GoF 23(四人帮,Gang of Four)一文中提到过设计模式可以分为三种类型,分别为 创建型模式 结构型模式 行为型模式 1. 建造者模式 这里介绍的建造者模式(Builder Pattern)属于第一中类型,即创建型模式。 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 它将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成(像零件的组装过程)。它将

梦否 1329

设计模式——建造者模式(BuilderPattern)

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

雪夜&流星的专栏 570

设计模式-03建造者模式Builder Pattern

建造者模式摘要:建造者模式是一种创建型设计模式,用于分步骤构建复杂对象,使构建过程与对象表示分离。该模式适用于需要创建包含多个组成部分的对象,特别是当这些部分可选或构建顺序可变时。通过UML类图展示了经典建造者模式和链式建造者模式的结构差异,并提供了Java实现示例。实现方式包括通过Builder内部类分步骤设置对象属性,最后通过build()方法返回完整对象,使代码更清晰且避免构造器参数过多的问题。

d3y1`5 81_09 1204

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

定义 建造者模式(Builder Pattern):将复杂对象的构造与其表示分离,以便相同的构造过程可以创建不同的表示。 主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 想象一个角色扮演游戏的角色生成器。最简单的选择是让计算机为您创建角色。...

易兒善 473

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

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

TechNomad的博客 1017

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

建造者模式 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 类型 创建型。 适用场景 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性。 隔离复杂对象的创建和使用,并使得相同的构建过程可以创建不同的产品。 建造者模式与抽象工厂...

kaven 4807

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

建造者模式可以帮助我们将复杂对象的构建过程与其表示分离,并且可以灵活定制构建过程,使得客户端可以根据需要创建不同配置的产品。通常作为配置类的构建器将配置的构建和表示分离开来,同时也是将配置从目标类中隔离出来,避免作为过多的setter方法。设计模式是在软件开发中常用的一种解决问题的方法论,它提供了一套经过验证和经验积累的解决方案,用于解决特定类型的问题。建造者模式(Builder Pattern)是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,以便可以按照相同的构建过程构建不同的表示。

qq_36896711的博客 152

设计模式-建造者模式

建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的 看代码示例 public class BuildModule { static class Demo{ p...

victor_wk的博客 208

设计模式|建造者模式(Builder Pattern)

建造者模式(Builder Pattern)是一种创建型设计模式,用于将一个复杂对象的构建过程与其表示分离,以便可以使用相同的构建过程创建不同的表示。

weixin_44435110的博客 1440

设计模式建造者模式(BuilderPattern)

核心模块:Builder抽象建造者、ConcreteBuilder具体建造者、Product产品角色、Director指挥者 所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git 使用场景:构建复杂对象,或者构件过程中需要强制的分布措施; 优点:客户可以精细的控制构建过程,将产品创建过程和产品本省分离,细节依赖于

didiao11300的专栏 288
上一篇: 【设计模式】工厂模式
下一篇: 【设计模式】单例模式,饿汉式单例和懒汉式单例
pointer_y
博客等级 码龄11年 157粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值