设计模式之创建者模式

软考 系统架构设计师系列知识点 —— 设计模式之创建者模式 阅读详情

意图

对象的构建与表示分离,用同样的创建过程可以创建不同的对象

适应性

创建的算法与对象的组成独立
同样的构造过程允许构造不同的对象

Builder Patten

组成

  • 抽象建造者Builder
  • 具体建造者ConcreteBuilder
  • 指挥者Director
  • 产品角色Product
UML图

这里写图片描述

流程图

这里写图片描述

Director要对product进行处理,但可能有多种product, 所以我们需要一种builder来专门创建我们所需的product, 再有director进行处理, 因此Director可以不关心builder是怎么具体的创建过程. 这就完成了Director的处理算法与product的创建过程的分离.

  • 达到了对Director的复用;
  • 对product的创建过程的封装;
适用性
  • 当对象的构建过程与构建的组成内容以及这些内容的具体装配方式独立时;
  • 构造过程得到的对象允许有不同的表示,即可能对象之间没什么太多的区别;
实现
  • Builder类可以构造所有的product,因此它的接口必须很普遍, ConcreteBulider只选择它感兴趣的接口来实现自己的product;
  • Builder类不需要虚接口, 因为product之间可能没有太多的关系,无法从众多的product之间提取出公共接口, 这里的dirctor只关注哪个具体的对象在适用;
  • Builder类中的接口以空函数的形式存在,不是纯虚函数;
总结
  • Director在作用就是完成对产品A与B的创建过程的封装,如流程图中,产品A与B的具体创建过程一样,都有步骤一与步骤二,因此,通过Director的封装,用户就不会知道产品A与B的具体创建步骤
  • 该模式完成“产品的使用”—-“产品的组装过程”—-“产品的部件”进行分离, 如产品提供如下部件:
    class BuildProA    // 提供不同的产品部件
    {
    public:
        void buildPartA(){pro.partA = ... };
        void buildPartB(){Pro.partB = ... };
        /* ...*/
    private:
        Product* pro;  // 具体创建的产品存放于这里
    };
    
    class Builder
    {
        public:
        virtual void buildPartA(){};
        virtual void builderPartB(){};
        virtual void builderPartC(){};
        virtual Product* GetProduct(){};  // 只提供接口
    };
    
    class Director
    {
    public:
        product* CreateProduct(Builder& buldr) // 指挥具体的产品创建流程(因此可以用同样的部件创建不同形式的产品,也可以用其他产品类的部件创建完全不同的产品)
    {
        buldr.bulidPartA();
        buldr.bulidPartB();
        return buldr.GetProduct();
    }
    private:
        product* UsedProduct;
    };

// 使用
Product* pro;
BuildProA buldA;
Director direct;
direct.CreateProduct(buldA);
pro = buldA.GetProduct();

总结
  • 同样的过程可以又不同的结果, 如造一辆汽车会有稳定的流程, 但汽车的具体形状则是千变万化;
  • 所以, 可以在Director中规定建造的具体流程, 二流程中调用的都是接口函数,函数的具体实现则是由ConcreteBuilder实现,这样就可以用同样的流程造出不同的产品;
3.java设计模式-创建者模式-抽象工厂模式.pdf java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是抽象工厂模式及应用场景和应用场景的代码事例。及各工厂模式的区别。 立即下载

相关推荐

对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理:

故障诊断,对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理

qq_44757503的博客 6060

设计模式篇章(2)——五种创建者模式

创建者模式主要思考如何创建一个对象,如何将对象的创建与使用分离。一般初级程序员都是new一个对象,然后紧接着使用这个对象,在某些场景中这样子是有问题的,需要使用创建者模式替代的(例如使用单例模式)。设计模式中提供了五种创建模型,分别是单例、原型、工厂方法、抽象工厂方法、创建者五种模式。

Cheney的博客 1249

PCB压合原理与工艺全流程深度解析

PCB压合是多层印制电路板制造中的核心工序,其本质并非简单物理叠加,而是高分子树脂流动、玻璃布应力释放、铜箔热膨胀及界面能调控的协同过程。理解压合原理,需掌握温度-压力-时间三维曲线动态关系;优化工艺流程,须兼顾叠板精度、热压参数匹配与冷却策略;关键影响因素如半固化片(PP)选型、铜箔表面处理、设备温场均匀性、结构对称性、环境湿度及操作手法,共同决定层间结合力、翘曲度与孔壁质量。本文围绕PCB压合原理、工艺流程、关键影响因素三大维度展开,融合IPC标准、实测数据与产线案例,为工艺工程师、NPI人员及设备维护

weixin_29191081的博客 256

设计模式-创建者模式

创建者模式

touchingnotyet的博客 1301

CentOS 7 安装 Python 3.10

我这里已经软链接了,正常未链接之前是python->python2.7而不是python3.10。python2.7默认安装是在 /usr/bin目录中,切换到/usr/bin/更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用。2. 安装 Python 3.10 必需的 openssl >= 1.1.1。默认的centos7是没有安装pip,先添加epel扩展源。/usr/bin/python 修改为如下。添加软链接,将原来的链接备份。添加python3的软链接。

bensonyang888的博客 2905

高通量测序数据分析:RNA-seq

深度测序相关数据库与数据格式 SRA toolkit 一、NCBI 和EBI、DDBJ组成INSDC,数据内容相同所以找NCBI就行。 (一)NCBI常用数据库 GenBank:遗传序列数据库,收集了所有公开的DNA序列及其注释 GEO (Gene Expression Omnibus) :收集整理各种表达芯片数据,后来加入了甲基化、lncRNA、miRNA、CNV等其他芯片,还有高通量测序数据...

qq_41134363的博客 3万+

java设计模式之创建者模式(5种)

软件设计模式,又称为设计模式,是一套被反复利用,代码设计经验的总结,他是在软件设计过程中的一些不断发生的问题,以及该问题的解决方案。**创建者模式又分为以下五个模式:**用来描述怎么“将对象的创建和使用分离”

卷心菜是俺的博客 1756

51单片机 DHT11温湿度传感器LCD显示+串口打印+Proteus仿真

DHT11+LCD1602+串口输出+Proteus仿真

perseverance51博客 7198

23种设计模式之创建者模式(单例模式,工厂模式,原型模式,建造者模式)

单例模式,工厂模式,原型模式,建造者模式

tensleep的博客 978

手把手教你学Simulink--基于未来出行解决方案的场景实例:电动飞行汽车(eVTOL)的动力系统建模与仿真

电动垂直起降飞行器零道路拥堵:三维空间飞行绿色低碳:全电驱动,零排放快速响应:城市内15分钟直达低噪音:相比直升机↓20dB📊 预测:2030年全球eVTOL市场规模将超300亿美元,中国、美国、欧洲加速适航认证。本文通过,构建了电动飞行汽车(eVTOL)动力系统高压电池系统建模电力电子(DC-DC、逆变器)实现PMSM电机+螺旋桨推进系统搭建完整飞行任务动态仿真性能KPI评估与优化。

MHD0815的博客 441

【PowerBI专栏】PowerBI导入MYSQL数据库

本文介绍了在PowerBI中连接MySQL数据库的方法。首先需要下载并安装MySQL官方.NET连接驱动(推荐8.4.0版本),安装完成后重启PowerBI。连接时需填写服务器IP和数据库名称等必填参数。文章详细说明了连接配置步骤,包括账户设置、数据表选择以及可能遇到的数据格式转换问题处理。最后指导用户完成数据清洗后进入PowerPivot进行后续计算。特别提醒最新9.4版本可能存在兼容性问题,建议使用稳定的8.4版本连接器。

技术与管理的平衡木- 690

24种设计模式之创建者模式-Java版

软件设计模式是前辈们代码设计经验的总结,可以反复使用。设计模式共分为3大类,创建者模式(6种)、结构型模式(7种)、行为型模式(11种),一共24种设计模式,软件设计一般需要满足7大基本原则。下面通过5章的学习一起来看看设计模式的魅力吧。创建型模式(6种):本质上就是将对象的创建与使用分离,就是描述怎样去创建对象。包括:单例、简单工厂、工厂方法、抽象工厂、原型、建造者 模式创建型模式的对比:工厂方法模式VS建造者模式工厂方法模式更注重对象的创建方式,建造者模式更注重部件的创建过程。

nuist_NJUPT的博客 1630

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

创建者设计模式

创建者设计模式是创建型设计模式,是一种很好理解的设计模式。就是告诉我们如何创建复杂对象的。       将一个复杂对象的构建过程和表示分离,使得相同的创建过程可以创建不同的表示。这句话可能不是很好理解,因为我在看创建者 设计模式的时候,碰到这句话我也觉得不好理解。下面我举一个例子解释一下。我们去kfc的时候会买套餐,一份套餐可以有不同的组合,但是能够进行的组合的鸡翅,可乐,汉堡是不变的。通过对

wengsy_5041的博客 698

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java设计模式三、创建者模式

创建者模式(Builder Pattern)是一种设计模式,属于创建型模式的一种。它的核心思想是将一个复杂对象的构造与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式通过将复杂对象分解为多个相对简单的部分,然后一步一步构建而成,从而提高了代码的灵活性和可读性。简单来说,创建者模式就像是建筑工程师与施工队的关系:工程师负责设计蓝图和施工步骤(构建过程),而施工队根据蓝图一步步施工(创建对象),最终完成建筑(复杂对象)。

2301_79028279的博客 1096

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Day01 - 设计模式 - 4.创建者模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为:单例模式工厂方法模式抽象工程模式原型模式建造者模式。

tang7mj的博客 833

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

个人感觉这个模式,使用的应该较少,主要应用于流程性的东西,创建者负责构建一个对象的各个部分,并且完成组装的过程,可以这么理解,创建者模式类似与一个步骤基本固定,但是每个步骤的具体形式却又可以变化的这类对象的创建。废话不多说了,进入我们的创建者模式。 意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性: 1、当创建复杂对象的算法应该独立于该对象的组成部

lbqBraveheart的专栏 3440

设计模式02创建者模式

需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。

Sky_小天 1073

设计模式之创建者模式 c++ 实现

创建者设计模式属于 创建型设计模式的一种。 创建者设计模式主要用于复杂对象的创建,这些对象的创建步骤和组合方式基本固定,但是可能具体的对象的组成部分却又可以自由的变化。创建者设计模式通过封装来隔离组成复杂对象的各个组成部分的变化。从而可以应对各种各样的需求。   创建者模式的类图如下: 举例来说: KFC的套餐 为 Product 角色  顾客为Cli

Mtour's blog 708

设计模式系列-创建者模式

本文主要是针对创建型模式中的创建者模式进行讲述,创建者模式是创建型模式中最负责的一个设计模式了,创建者负责构建一个对象的各个部分,并且完成组装的过程,我们可以这么理解创建者模式,创建者模式类似与一个步骤基本固定,但是每个步骤中的具体形式却又可以变化的这类对象的创建。也许这样说还是太抽象了,我们这么来理解吧,我感觉让人最容易理解的形式还是图形化的形式,不但接受起来容易,并且让人映象深刻,不知道大家是不是和我有同感呢?

青衫的博客 774

设计模式:创建者模式

创建者模式(Builder Pattern),又称建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式。该模式允许将一个复杂对象的构建与它的表示分离,这样同样的构建过程可以创建不同的表示。创建者模式通常使用一个指挥者(Director)类,它指导构建过程,以及一个或多个建造者(Builder)类,它们用于实现具体的构建步骤。创建者模式非常适合构建复杂对象,尤其是当对象需要多个部分以特定顺序组合时。

liu_rockefeller的博客 809

java设计模式-创建者模式

java设计模式-创建者模式。

shuai的博客 170

设计模式 - 创建者模式(第四章)

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。

codechatter的博客 931

设计模式笔记——创建者模式

所谓创建者模式,他的意思就是,将一个复杂对象的创建过程,抽象出共性的创建流程和差异性的具体创建属性,将它们分离出来,我们按照共性的创建流程创建,在差异性的具体创建属性中进行差异的操作,从而创建出具有相同结构或者流程 的不同产品。创建者模式,一般由四部分组成,product产品类,builder抽象创建者类,createbuilder创建者类,director导演类四个角色组成。 具体来说,pro

njnu_liushengyu的博客 502
上一篇: 简单五子棋服务器
下一篇: 设计模式之工厂方法
呵离
博客等级 码龄12年 18粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值