23种设计模式(十一)——生成器模式【对象创建】

news2024/9/23 7:25:23

文章目录

    • 意图
    • 什么时候使用生成器
        • 真实世界类比
    • 生成器模式的实现
    • 生成器模式的优缺点

亦称:建造者模式、Builder

意图

生成器模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

换成大白话理解就是:一个复杂的对象,它的创建过程和使用过程要分开。对于对象的使用者来说,我只需要告诉创建者我需要使用这个复杂对象,至于这个复杂对象是怎么创建的,不关我事。

在这里插入图片描述

什么时候使用生成器

1、对象的创建过程非常复杂

2、对象的创建步骤固定

3、不同的调用者获得的对象不完全相同

如果需要创建的对象不复杂,这时候是没必要使用生成器模式的。因为生成器模式本身的代码实现有一点复杂,使用它成本有点高,还不如简单的硬编码

如果对象的创建步骤不固定,也不推荐使用生成器模式。

真实世界类比

思考如何创建

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

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

相关文章

云网络VPC核心知识总结

云网络VPC核心知识总结

【OpenCV】 Octave | 角点检测 | SIFT/SURF算法

Ⅰ. 图像特征提取与描述 0x00 角点特征 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时&#xff0c…

没工作在家做什么赚钱?先从开展副业开始

新的一年即将开始,很多人对未来的工作,生活充满了期待。但是还有很多朋友处在失业状态当中,随着疫情的放开,人们的生活回归正常,于是便想着出去赚钱养家。对于没工作的朋友,我的建议是先从开展副业开始&…

Dubbo SPI实战

Dubbo SPI实战 1. SPI 概述 在具体分析之前还是先了解下 SPI 是什么? 首先它其实是 Service provider interface 的简写,翻译成中文就是服务提供发现接口。 不过这里不要被这个名词搞混了,这里的服务发现和我们常听到的微服务中的服务发现…

Spring笔记【JavaEE】

Spring 核⼼ Spring 是包含了众多⼯具⽅法的 IoC 容器。 什么是容器 我们之前 接触的容器有哪些? List/Map-> 数据存储容器Tomcat->Web容器 什么是Ioc IoC Inversion of Control 翻译成中⽂是“控制反转”的意思,也就是说 Spring 是⼀个“控…

第三方控价公司,怎么选才靠谱

第三方控价公司,可以帮我们解决渠道问题,分析管理经销队伍,为我们提供宝贵的商业情报。但是市场上第三方控价公司不止一家,随便一搜,就出来一串,业务与服务方面难免良莠不齐。如何从中挑选合格的服务商&…

【甄选靶场】Vulnhub百个项目渗透——项目五十三:Inclusiveness(更改ua,lfi->rce)

Vulnhub百个项目渗透 Vulnhub百个项目渗透——项目五十三:Inclusiveness(更改ua,lfi->rce) 🔥系列专栏:Vulnhub百个项目渗透 🎉欢迎关注🔎点赞👍收藏⭐️留言&#x…

springBoot工程入门

文章目录基本知识快速搭建springBoot工程起步依赖原理分析spring-boot-starter-parentspring-boot-starter-web配置yaml数据格式读取配置profileprofile配置方式多profile文件方式yml多文档方式profile激活方式内部配置加载顺序外部配置加载顺序整合其他框架Junitredismybatiss…

6.Java运算符

文章目录前言一、运算符和表达式二、运算符(1)算术运算符a.数字相加b.字符串相加c.字符相加(2)自增自减运算符应用场景:(3)赋值运算符(4)关系运算符(5)逻辑运算符应用场景:短路逻辑运算符练习(6)三元运算符练习1练习二(7)运算符优先级总结前言 一、运算符和表达式 二、运算符 …

Elasticsearch的Mapping使用分析(es7官方文档解读)

目录mapping是什么动态mapping默认动态mapping设计自己的mapping检测模板运行时字段dynamic参考ES 7版本官方文档 官方7.17文档 挑了一些我觉得重要的点总结 如有谬误,欢迎指正 mapping是什么 在ES里创建一个索引 PUT demo_index {"mappings": {"…

三十二、Kubernetes中Service详解、实例第二篇

1、概述 在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题,kubernetes提供了Service资源&…

HTML常见转义字符

HTML中常见的转义字符 其他一些常用的字符实体: 链接 http://www.w3chtml.com/html/character.html

PID优化系列之给定值斜坡函数(PLC完整代码+Simulink仿真测试)

很多变频器里的工艺PID,都有"PID给定值变化时间"这个参数,这里的给定值变化时间我们可以利用斜坡函数实现,当然也可以利用PT1 低通滤波器对给定值进行平滑。给定值缓慢变化在很多闭环控制系统里很重要,比如收放卷在初始建张阶段目标值不建议突变容易将卷材拉断(…

初识 Django(Python WEB 框架)

初识 Django(Python WEB 框架)参考描述优劣 Django(部分)优势功能完备,开箱即用开发效率高Admin 管理后台安全ORM可扩展劣势性能模板过渡封装获取长期支持版(Long Time Support,LTS)…

基于Java+SpringBoot+Vue企业资源规划系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…

开源项目介绍

文章目录简介经验casdoorkeycloaklatexopenMP简介 不经常见的开源项目,第一次接触。 经验 如果是已经开源的软件,使用起来非常的平稳,问题也少。原因是已经经过了多年的历练,已经稳当下来,该发现的问题已经解决的差…

unplugin-vue-components 不能识别组件的自动导入的类型 (pnpm)

引言 unplugin-vue-components 是一款能帮助组件自动导入的库&#xff0c;简单点的说&#xff0c;你不需要使用import xx from xxx.vue 这行语句也能实现导入的效果。 <script setup lang"ts"> import ScreenAdpter from compontents/ScreenAdpter/index.vue i…

[前端笔记——多媒体与嵌入] 6.HTML 中的图片+视频+音频内容

[前端笔记——HTML介绍] 6.HTML 中的图片1.HTML中的图片1.1怎样将一幅图片放到网页上&#xff1f;1.2备选文本1.3宽度和高度1.4.Image titles 图片标题1.5通过为图片搭配说明文字的方式来解说图片1.6CSS背景图片2.视频和音频内容2.1Web中的视频和音频2.1.1<video>元素2.1…

在linux中部署SpringBoot+Vue前后端分离应用

最近有任务需求&#xff0c;自己在linux中通过docker虚拟环境的方式部署了SpringBoot和Vue前后端分离的项目&#xff0c;现在做点总结&#xff0c;给需要的小伙伴分享。不足之处多多指正。关于在linux中安装docker&#xff0c;可以查看博主前几篇博客按照步骤进行安装&#xff…

【JUC系列】ReentrantLock实现本地锁的源码分析

使用场景 public class ReentrantLockTest {private static ReentrantLock lock new ReentrantLock();public static void main(String[] args) {new Thread(()->{lock.lock();// do somethingSystem.out.println("111");try {Thread.sleep(Integer.MAX_VALUE);…