设计模式: 建造者模式

文章目录

  • 一、什么是建造者模式
  • 二、建造者模式的结构
  • 三、使用场景+案例分析
    • 1、使用场景
    • 2、案例分析

一、什么是建造者模式

建造模式通过一步一步的去构建一个复杂的对象。该模式将对象的构建细节封装在一个独立的建造者类中,使得客户端代码可以根据需要定制对象的构建过程,而不必知道具体的构建细节。
在这里插入图片描述

二、建造者模式的结构

建造者模式通常包括以下几个角色:

  • 产品类(Product):需要对象,通常是包含多个属性的复杂的对象。
  • 抽象建造者(Builder):定义了构建各个部分的抽象接口。
  • 具体建造者(Concrete Builder):实现了抽象建造者接口,负责实际构建产品的各个部分,并提供一个方法用于获取最终构建出的产品。
  • 指挥者(Director):负责使用建造者对象构建产品的对象。客户端通过指挥者来指定构建顺序和构建过程,最终获取构建好的产品。
    在这里插入图片描述

三、使用场景+案例分析

1、使用场景

  • 构建复杂对象:当需要创建的对象具有复杂的内部结构或包含多个部分时,可以使用建造者模式将构建过程和表示分离,使得构建过程更加灵活、可控。
  • 定制化对象构建:通过建造者模式,客户端可以根据自身需求定制化地构建对象,选择所需的部分组合,而不必关心具体的构建细节。
  • 构建过程复杂且多样化:当构建对象的过程比较复杂且具有多种变化形式时,可以使用建造者模式将不同的构建过程封装在不同的具体建造者中,以便灵活地切换和选择构建过程。
  • 避免构造方法参数过多:如果一个类的构造方法需要传入大量参数,容易造成调用者困扰,可以考虑使用建造者模式将这些参数封装在一个建造者对象中,简化对象的创建过程。
  • 产品的创建顺序不固定:对于需要按照不同顺序创建对象的场景,建造者模式提供了一种灵活的方式来构建对象,客户端可以指定构建顺序。

2、案例分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cRIO9040中NI9381模块的测试

硬件准备 CompactRIO9040NI9381直流电源(可调)网线 软件安装 下载地址 LabVIEW Real-Time 模块 NI CompactRIO 设备驱动程序 LabVIEW FPGA 模块(可选) 仅以下情况需要LabVIEW FPGA模块: 想为CompactRIO终端设计FP…

Gitlab操作流程

阶段1-构建账户信息 1.1 管理员分配账户 方式1-推荐 企业正常使用gitlab时,一般由项目经理(超级管理员)手动创建开发者账户信息,然后将账户发送给开发者,以便登录使用; 流程如下: 点击创建用户按钮; 创…

spring-orm:6 HibernateJpaVendorAdapter源码解析

版本 spring-orm:6.1.3 源码 org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter public class HibernateJpaVendorAdapter extends AbstractJpaVendorAdapter {// 旧版本Hibernate的方言类是否存在标识private static final boolean oldDialectsPresent Clas…

顶顶通实时质检系统如何添加词库

文章目录 前言联系我们步骤1. 导入系统预置词库2. 手动添加词库 在实时质检时如何质检到词库 前言 本篇文章主要讲解顶顶通实时质检系统如何添加词库。 词库添加的方式: 导入系统预置词库手动添加词库 联系我们 有意向了解实时质检系统的用户,可以点击…

邦芒支招:6个建议帮你找到合适的工作

说起来,今年找工作对很多毕业生确实不利,受大环境影响,很多小微企业难以为继,甚至大企业也在缩减人员,人才需求量总体降低了,但是,毕业生那么多,导致有一部分大学生迟迟找不到工作。…

web基础及http协议 (二) apache

一、httpd 安装组成 http 服务基于 C/S 结构 1 .常见http 服务器程序 httpd apache,存在C10K(10K connections)问题 nginx 解决C10K问题lighttpd IIS .asp 应用程序服务器 tomcat .jsp 应用程序服务器 jetty 开源的servlet容器&#xf…

[SSD 测试 1.3] 硬件测试之主控测试用例

专栏 《深入理解SSD》 主控制器方面,消费级市场的主要厂商包括三星、英特尔、西部数据、海力士和东芝,他们的产品涵盖了SATA和Nvme Pcie3.0/4.0接口。而在企业级市场,国内厂商华为海思H181x系列也有存在。在实际速度方面,该速度会受到制程及后端Nand Flash接口速率和通道数…

Postgresql源码(124)两个事务更新同一行数据时的行为和原理分析

XactLockTableWait函数、transactionid锁的一些原理和分析 结论 更新行时,会根据xmax拿transactionid锁,等对应的事务结束。 如果结束是回滚,则heap_update继续更新。如果结束时提交,则heap_update要返回上层ExecUpdate调用EvalP…

用Dockerfile创建PostgreSQL数据库

官网下载基本镜像 [rootlocalhost ~]# docker pull postgres:latest创建项目目录 [rootlocalhost ~]# mkdir /root/postgresql创建一个名为 “Dockerfile” 的文件 [rootlocalhost ~]# vim Dockerfile # 使用官方的PostgreSQL镜像 FROM postgres:latest# 设置环境变量&#…

10款ai文生图软件/网站推荐

1. Ai-Chat 推荐指数:⭐⭐⭐⭐ 链接: https://mmm.aiyujiang.com/ 上传图片并输入AI提示词就能一键生成各类动漫、卡通风格头像,算法强大,风格多样,一键开启你的AI自由创作之旅。有电脑版和手机版,也是很…

大数据信用报告查询方式一般有几种?哪种比较好?

在了解这个问题之前,想必你对大数据信用与人行信用的区别都是比较清楚了,本文呢就着重讲一下大数据信用报告查询方式有几种,哪种比较好,感兴趣的朋友不妨一起去看看。 大数据信用报告常见的三种查询方式: 一、二维码分…

手持三防平板丨国产化加固平板丨国产三防平板发展的意义是什么?

随着现代科技的快速发展,平板电脑在我们的生活中扮演着越来越重要的角色。然而,传统的平板电脑只能在普通的环境中使用,而无法在恶劣的环境中使用,例如在高海拔、高温、高湿度、沙漠等环境中,传统平板电脑往往会出现故…

目标检测教程视频指南大全

魔鬼面具-哔哩哔哩视频指南 必看干货系列(建议搞深度学习的小伙伴都看看,特别是图像相关) 深度学习常见实验问题与实验技巧(适用于所有模型,小白初学者必看!)还在迷茫深度学习中的改进实验应该从哪里开始改起的同学,一定要进来看看了!用自身…

利用PaddleNLP进行文本数据脱敏

最近在脱敏一些客服数据,同事用正则进行了一些处理,但是感觉针对人名、数量等信息还是无法处理,例如“北方种植了很多李子树”,李子树有可能被识别为人名,又如“美国采购坦克1005台,价值4500万比索”&#…

图的遍历(广度优先遍历BFS,深度优先遍历DFS)

目录 图的遍历概念: 图的广度优先遍历(BFS): 代码实现如下: 测试如下: 注意: 图的深度优先遍历(DFS): 代码实现如下: 测试如下&#xff1…

Web服务器基础

Web服务器基础 【一】前端概述 【1】HTML HTML(超文本标记语言)是用于创建网页结构的标记语言。它定义了网页的骨架,包括标题、段落、列表、链接等元素,但没有样式。可以将HTML视为网页的结构和内容的描述。 【2】CSS css&…

阿里云服务器镜像是什么?如何选择镜像?

阿里云服务器镜像怎么选择?云服务器操作系统镜像分为Linux和Windows两大类,Linux可以选择Alibaba Cloud Linux,Windows可以选择Windows Server 2022数据中心版64位中文版,阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

Go 是否有三元运算符?Rust 和 Python 是怎么做的?

嗨,大家好!本文是系列文章 Go 技巧第十四篇,系列文章查看:Go 语言技巧。 今天来聊聊在 Go 语言中是否支持三元运算符。这个问题很简单,没有。 首先,什么是三元运算符? 在其他一些编程语言中&a…

MySQL篇之分库分表

一、为什么要分库分表 1.目的 1. 分担了访问压力 2. 解决存储压力 2.分库分表的时机 1. 前提,项目业务数据逐渐增多,或业务发展迅速,单表的数据量达1000W或20G以后。 2. 优化已解决不了性能问题(主从读写分离、查询索引…&am…

Python | Conda常用命令

一、介绍 1、Anaconda工具 Anaconda是一个用于数据科学和机器学习的开源软件包管理器和环境管理器。它包含了许多流行的数据科学工具和库,如Python、Jupyter Notebook、numpy、pandas、scikit-learn等,可以帮助用户轻松地管理和安装这些工具和库。Anaco…