java 实现建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,用于创建一个复杂对象,将对象的构建过程与其表示分离,以便可以使用相同的构建过程来创建不同的表示。在Java中,可以使用建造者模式来构建具有多个属性的对象。下面是一个简单的Java实现建造者模式的示例:
首先,我们创建一个产品类 Product,该产品具有多个属性需要设置:
public class Product {private String part1;private String part2;private String part3;public void setPart1(String part1) {this.part1 = part1;}public void setPart2(String part2) {this.part2 = part2;}public void setPart3(String part3) {this.part3 = part3;}@Overridepublic String toString() {return "Product [part1=" + part1 + ", part2=" + part2 + ", part3=" + part3 + "]";}
}
接下来,我们创建一个建造者类 ProductBuilder,用于构建 Product 对象。建造者模式的关键在于建造者类负责设置产品的各个属性:
public class ProductBuilder {private Product product = new Product();public ProductBuilder withPart1(String part1) {product.setPart1(part1);return this;}public ProductBuilder withPart2(String part2) {product.setPart2(part2);return this;}public ProductBuilder withPart3(String part3) {product.setPart3(part3);return this;}public Product build() {return product;}
}
最后,我们可以使用建造者模式来构建 Product 对象:
public class BuilderPatternDemo {public static void main(String[] args) {Product product = new ProductBuilder().withPart1("Part 1").withPart2("Part 2").withPart3("Part 3").build();System.out.println(product);}
}
在这个示例中,我们通过 ProductBuilder 类来构建 Product 对象,可以逐步设置产品的各个属性,最后使用 build 方法来获取最终的产品对象。这种方式使得对象构建的过程更加清晰,易于理解和维护,同时允许构建不同属性的产品。
建造者模式在需要构建复杂对象,且对象的构建过程有多个步骤或属性设置时非常有用。它可以使客户端代码更加简洁,同时也能够保持代码的可读性和可维护性。
相关文章:
java 实现建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,用于创建一个复杂对象,将对象的构建过程与其表示分离,以便可以使用相同的构建过程来创建不同的表示。在Java中,可以使用建造者模式来构建具有多个属性的对…...
串行FIR滤波器
串行 FIR 滤波器设计 串行设计,就是在 16 个时钟周期内对 16 个延时数据分时依次进行乘法、加法运算,然后在时钟驱动下输出滤波值。考虑到 FIR 滤波器系数的对称性,计算一个滤波输出值的周期可以减少到 8 个。串行设计时每个周期只进行一次乘…...
Spring Boot 整合 Shiro(后端)
1 Shiro 什么是 Shiro 官网: http://shiro.apache.org/ 是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。 …...
面试中的自我介绍:首印象决定一切
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
深入理解联邦学习——联邦学习的价值
分类目录:《深入理解联邦学习》总目录 毫无疑问,如今我们正经历互联网第四次信息革命,坐拥海量的信息与数据。这些数据如果能够用AI的方式进行解读,将会为人类日常生活带来颠覆性变革。联邦学习作为未来AI发展的底层技术ÿ…...
linux 内存一致性
linux 出现内存一致性的场景 1、编译器优化 ,代码上下没有关联的时候,因为编译优化,会有执行执行顺序不一致的问题(多核单核都会出现) 2、多核cpu乱序执行,cpu的乱序执行导致内存不一致(多核出…...
Vue 如何监听 localstorage的变化
需求 分析 1. 初始想法 computed: {lonlat(){console.log(localStorage.getItem(lonlat))return localStorage.getItem(lonlat)}},watch: {lonlat(newVal,oldVal){console.log(1002,newVal,oldVal)}},我们想着用 计算属性 computed 和 watch 监听实现,但根本没有…...
ActiveMQ使用JDBC持久化消息
为了避免服务器宕机而导致消息丢失,ActiveMQ提供消息持久化机制。 ActiveMQ提供多种消息持久化的方式,如LevelDB Store、KahaDB 、AMQ、JDBC等,详情可以访问官网。 ActiveMQ默认是使用KahaDB持久化消息。在/conf/activemq.xml如下配置&…...
光环云出席Enjoy出海AIGC主题研讨会,助力企业迎接AI时代机遇与挑战
AIGC的崛起,为2023年的全球化突围之路拓展了想象空间。 从年初至今,OpenAI和ChatGPT高举高打,很大程度上起到了教育市场的作用;此外,Meta推出大模型,Snapchat、Soul、字节等大厂或上线或内测聊天机器人&…...
动态规划:路径和子数组问题(C++)
动态规划:路径和子数组问题 路径问题1.不同路径(中等)2.不同路径II(中等)3.下降路径最⼩和(中等)4.地下城游戏(困难) 子数组问题1.最大子数组和(中等…...
微服务-gateway跨域配置
文章目录 一、前言二、gateway跨域配置1、问题描述1.1、什么是跨域请求?1.1.1、同源策略1.1.2. 安全性考虑1.1.3. 跨域攻击 1.2、问题产生原因 2、解决方法2.1、修改配置文件2.2、配置类统一配置2.3、全局跨域拦截器 三、总结 一、前言 在SpringCloud项目中&#x…...
爬虫项目(二):中国大学排名
《Python网络爬虫入门到实战》京东购买地址,这里讲解了大量的基础知识和实战,由本人编著:https://item.jd.com/14049708.html配套代码仓库地址:https://github.com/sfvsfv/Crawer文章目录 分析第一步:获取源码分析第一…...
十二、MySQL(DQL)分组/排序/分页查询如何实现?
总括 select 字段列表 from 表名 [where 条件] (group by)/(order by)/(limit) 分组字段名 分组查询 1、分组查询 (1)基础语法: select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组之后的过滤条件] (…...
设计模式概念学习
创建类型 单例模式 饿汉 构建时就创建 懒汉 单线程-访问到的时候才创建多线程-低效率 做法:加锁->若未创建则创建->获取资源->解锁 缺点:效率低,每次访问之前都要加锁,资源创建之后不能被同时被多个线程访问多线程-…...
Spring MVC 五 - DispatcherServlet初始化过程(续)
今天的内容是SpringMVC的初始化过程,其实也就是DispatcherServilet的初始化过程。 Special Bean Types DispatcherServlet委托如下一些特殊的bean来处理请求、并渲染正确的返回。这些特殊的bean是Spring MVC框架管理的bean、按照Spring框架的约定处理相关请求&…...
day36:网编day3,TCP、UDP模型
下载: #include <myhead.h>#define ERR(s) do\ {\fprintf(stderr,"__%d__",__LINE__);\perror(s);\ }while(0) #define PORT 69 #define IP "192.168.115.184"int do_download(int cfd,struct sockaddr_in sin); //int do_upload(); int…...
MySQL——MySQL的基础操作部分
使用命令行登录 mysql -u root -p 直接敲击回车后输入密码即可: 当看到出现“mysql>“的符号之后,就表示已经进入到了MySQL系统中,就可以输入My…...
编译OpenWrt内核驱动
编译OpenWrt内核驱动可以参考OpenWrt内部其它驱动的编写例程,来修改成自己需要的驱动 一、OpenWrt源代码获取与编译 1.1、搭建环境 下载OpenWrt的官方源码: git clone https://github.com/openwrt/openwrt.git1.2、安装编译依赖项 sudo apt update -…...
文件上传漏洞-upload靶场5-12关
文件上传漏洞-upload靶场5-12关通关笔记(windows环境漏洞) 简介 在前两篇文章中,已经说了分析上传漏的思路,在本篇文章中,将带领大家熟悉winodws系统存在的一些上传漏洞。 upload 第五关 (大小写绕过…...
Redis功能实战篇之Session共享
1.使用redis共享session来实现用户登录以及token刷新 当用户请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开tomcat访问redis,也可以作为静态资源服务器,轻松扛下上万并发, 负载均衡…...
ADF4350频点锁定与电源滤波实战:为什么你的VCO输出有噪声?加个钽电容试试!
ADF4350频点锁定与电源滤波实战:为什么你的VCO输出有噪声?加个钽电容试试! 在射频电路设计中,ADF4350作为一款集成VCO的宽带频率合成器,因其出色的性能和灵活性广受工程师青睐。然而,许多开发者在实际应用中…...
深入解析Android ContentProvider:从基础到高级应用与面试准备
引言 在Android开发中,数据共享和访问控制是构建高效、安全应用的关键。ContentProvider作为Android四大组件之一,专门用于管理结构化数据的共享,提供标准化的接口供应用间安全访问数据。本文将以ContentProvider为核心领域,全面探讨其原理、实现、应用及面试常见问题。文…...
夹矸煤层采煤机螺旋滚筒工作性能优化【附代码】
✨ 长期致力于夹矸煤层、螺旋滚筒、工作性能、可靠性、多目标优化研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)离散元-有限元耦合截割模型与煤岩参…...
程序员的团队协作:如何与测试、产品团队高效协作
在软件研发的复杂链条中,程序员、测试人员与产品经理如同三个紧密咬合的齿轮,任何一环的卡顿都可能导致整个项目的停滞。对于程序员而言,跳出“专注代码实现”的单一视角,建立与测试、产品团队的高效协作模式,不仅能减…...
手把手教你用C#搞定海康机器人扫码枪的TCP通信(附完整Socket代码)
工业级条码采集实战:C#与海康扫码枪的TCP通信深度解析 在自动化仓储和智能制造场景中,海康威视工业扫码枪凭借其卓越的解码性能和稳定的通信机制,已成为产线数据采集的首选设备之一。不同于消费级扫码器的即插即用特性,工业级设备…...
Source Han Serif CN:开源中文字体跨平台部署完全指南
Source Han Serif CN:开源中文字体跨平台部署完全指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为项目中的中文字体选择而纠结吗?既要考虑版权合规&a…...
汽车跑偏吃胎?警惕四轮定位
开车上路,你是否遇到过这些情况:明明双手握紧方向盘,车子却总是不自觉地往一边跑;在高速上行驶,方向盘开始轻微抖动;轮胎用了没几年,一侧就磨得光秃秃,而另一侧花纹却很深……很多老…...
导师认可的AI论文软件榜单(2026 最新实测)
基于学术严谨性、写作效率、功能全面性及用户反馈,以下是2026年最新实测中表现突出的AI论文写作工具权威榜单,按综合使用价值从高到低排列,并附上各工具的核心优势与适用人群。🏆 第一梯队:全流程学术解决方案…...
别再只盯着CPU内存了!用Prometheus+Grafana打造你的K8S应用黄金监控仪表盘
从基础设施到业务价值:用PrometheusGrafana构建Kubernetes应用黄金监控体系 当Kubernetes集群中的Pod状态全部显示"Running"时,很多团队会误以为万事大吉。直到某天凌晨3点,客服系统被用户投诉淹没,才发现订单成功率已暴…...
2026实测:专业降AI率软件选这款就对了
2026 年降 AIGC 工具已经从“机械式语义调整”进化为多维度智能优化系统,核心评估指标涵盖 AI 痕迹去除精准度、学术表达一致性、格式结构完整性、长段落逻辑稳定性、内容改写适配性以及高校检测合规性。本次测评覆盖 5 款主流工具,测试场景包括中英文论…...
