优雅地创建实体类——Builder 链式调用

我们来看以下的代码。改造前构造实体类用重载构造器或用 setter 对变量进行赋值,一旦变量变多则需要对每个变量进行 set 赋值,并且有可能会赋值错对象。

private static void test() {//1.构造器赋值Task task1 = new Task("2023000000009439","2023000000009435","testType");//2.set赋值Task task2 = new Task();task2.setId("2023000000009439");task2.setBizNo("2023000000009435");task2.setSubType("testType");//...变量超级多
}
改造步骤
  1. 在 Bean 类里面新建一个静态内部类:XxxBuilder;

  2. 把 Bean 类所有参数复制到 XxxBuilder,然后在 XxxBuilder 新建必须参数的构造器,其他参数使用变量名作为方法然后返回自身(this)以便形成链式调用;

  3. 在 Bean 类里面新建一个接收 XxxBuilder 参数的私有构造器,避免使用 new 创建对象;

  4. 在 XxxBuilder 类新建一个 build 方法开始构建 Bean 类,作为链式调用的结束。

    public class Task{//省去变量public TaskDP(TaskBuilder taskBuilder) {this.bizNo = taskBuilder.bizNo;this.subType = taskBuilder.subType;this.id = taskBuilder.id;}public static class TaskBuilder{private String bizNo;private String subType;private String id;public TaskBuilder bizNo(String bizNo){this.bizNo = bizNo;return this;}public TaskBuilder id(String id){this.id = id;return this;}public TaskBuilder subType(String subType){this.subType = subType;return this;}public Task build(){return new Task(this);}}
    private static void test() {Task task = new Task.TaskBuilder().id("202306060000000001").bizNo("202306060000000001").subType("testType").build();
    }

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

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

相关文章

如何轻松将照片从 iPhone 传输到 Android?

从 iPhone 换到 Android 手机后,你肯定不想丢掉珍贵的照片回忆吧?好在,本文分享了 6 种有效的解决方案,教你如何轻松地将照片从 iPhone 传输到 Android。 第 1 部分:如何通过 iReaShare Phone Transfer 将照片从 iPhon…

AI编程:[体验]存量微服务架构下植入WebSocket的“踩坑”与“填坑”

一、核心需求 功能需求:用户可以通过语音与AI对话,并实现类似ChatGPT的实时交互(流式响应,打字机效果)技术需求:在现有微服务架构中进行扩展(SpringCloud) 二、技术盲点 陌生领域 …

uniapp事件onLoad区分大小写

区分大小写。不然会不起作用。onLoad方法中的功能均不会被执行。 除了功能逻辑要检查外。大小写是要认真检查的一部分

《打破微前端困局:样式冲突与资源隔离破局指南》

微前端架构凭借其独特优势,正逐渐成为众多大型项目的首选架构模式。它将一个庞大的前端应用拆解为多个相对独立的子应用,每个子应用可以独立开发、部署和维护,极大地提升了开发效率与团队协作的灵活性。然而,随着微前端架构的广泛…

OpenCV——边缘检测

边缘检测 一、边缘检测二、边缘检测算子2.1、Sobel算子2.2、Scharr算子2.3、Laplacian算子 三、Canny边缘检测3.1、Canny边缘检测的步骤3.2、Canny算法的实现 一、边缘检测 边缘是指图像中像素的灰度值发生剧烈变化的区域: 图像中的边缘主要有以下几种成因&#x…

2506认证资讯|工信部出手整治多品牌充电宝,WMC上海稍逊往年,RED修订Common Charger,WiFi7 FCC测试

01 — 中国 工信部拟制定移动电源强制性国家标准 该标准将从以下方面全面提升移动电源安全性: 1. 拟在GB 31241、GB 4943.1基础上,新增或加严过充电、针刺等试验要求。 2. 拟提出影响电池安全的正负极材料、隔膜等关键材料要求。 3. 拟规范锂离子电池…

Linux Regulator 子系统核心逻辑与关键问题全解析

Linux Regulator 子系统核心逻辑与关键问题全解析 一、什么是 regulator 子系统?核心作用? regulator 子系统是 Linux 内核为板级/SoC 多路可控电源设计的统一电源管理框架。它的主要作用是: 为每一路可控电源(Buck、LDO、DCDC …

制造业官网3D应用,让产品会“说话”

在当今数字化时代,装备制造业正经历着前所未有的变革。随着消费升级和国内经济的蓬勃发展,中国社会的经济格局从传统的“工业经济”向多元化的“服务经济”转型。装备制造业作为制造业与服务业融合的核心领域,积极探索全新的“服务化”发展模…

SCAU15--气球狂欢节

15 气球狂欢节 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G;GCC 描述: 一个充满魔法的国度中,存在一场年度的节日,名为“气球狂欢节”。在这个节日中,有一个传统的比赛,那就是“气球挑战赛”…

python打卡day56@浙大疏锦行

知识点回顾: 假设检验基础知识 原假设与备择假设P值、统计量、显著水平、置信区间 白噪声 白噪声的定义自相关性检验:ACF检验和Ljung-Box 检验偏自相关性检验:PACF检验 平稳性 平稳性的定义单位根ADF检验: 越小越平稳 季节性检验 ACF检验序列…

采集文章+原创AI处理+发布网站详细教程

简数采集器是新一代的网站文章采集和发布平台,完全在线配置和使用云采集,功能强大,操作简单,配置快捷高效。 简数不仅提供网页文章采集、数据批量处理、定时采集、定时定量自动发布等基本功能,还集成强大的SEO工具与接…

Hystrix超时降级机制全解析

Hystrix的超时降级实现主要通过以下核心机制完成,结合配置、注解和Fallback逻辑实现服务容错: 1. 超时触发条件 默认超时时间:Hystrix默认超时阈值为1秒,超过该时间未响应则触发降级。自定义配置:可通过HystrixComman…

6月份最新代发考试战报:思科华为HCIP HCSE 考试通过

6月份最新代发考试战报:思科华为HCIP HCSE 考试通过 H19-423 HCSA-Presales-IP Network 数通考试通过, H12-725 HCIP-Security安全 考试通过,H13-121 HCIP-Kunpeng Application Developer鲲鹏计算 考试通过,CCNP 350-401考试通过…

谈谈我的软考经历

我 2020 年高考进入大学,软件工程专业,去年(24年7月)毕业开始工作。我实习是在一家云计算公司,公司内部对软考的证书没有什么激励或补助之类的,我也一直认为计算机嘛,“talk is cheap&#xff0…

CVPR 2025革命性突破!可变形Mamba,刷新SOTA记录!

CVPR 2025上,众多创新研究展示了Mamba在图像分类、目标检测、语义分割等多个任务中的卓越表现。其中,可变形Mamba的最新研究成果正在不断刷新我们对视觉任务性能的认知。大连理工大学发布的DefMamba通过可变形扫描策略动态调整扫描路径,优先关…

蜂鸟代理IP+云手机:跨境电商多账号运营的“隐形风控引擎”

在亚马逊、TikTok Shop等平台的严苛风控下,跨境电商多账号运营长期面临“设备关联封号”“IP污染限流”“地域画像矛盾”三大痛点。传统方案账号存活率不足35%,而蜂鸟代理IP与云手机技术的协同,通过IP层隔离设备层虚拟化行为层仿真三重防护&a…

Boss:组件

能帮到你的话,就给个赞吧 😘 文章目录 组件Event Begin Play获取 Owner:不会报错吗,组件初始化的时候 Owner还不存在吧 Attack General:Boss普通攻击不可以连续触发:只有在当前动作为NoAction时才可以攻击 …

供应链数据可视化大屏

在全球化与数字化转型的双重浪潮下,供应链管理正面临前所未有的挑战:黑天鹅事件频发、多环节协同效率低下、库存与成本难以平衡……如何让供应链更透明、更敏捷、更具韧性?供应链数据可视化大屏应运而生,成为企业破解管理痛点的关…

XML读写数据-XPATH用法,快速定位元素

在XPath查询效率对比中,两种方式的性能差异如下: ‌绝对路径方案‌ /configuration/system.applicationHost/sites/site[nameWebSite1] 直接通过文档层级导航,避免全局扫描适合已知完整路径结构的场景,解析速度最快13 ‌相对路径…

Python 多版本与开发环境治理架构设计

Python 多版本治理理念(Windows 平台 零基础友好)-CSDN博客 Python 多版本开发环境治理:理论架构与实践-CSDN博客 Python 开发环境全栈隔离架构:从 Anaconda 到 PyCharm 的四级防护体系-CSDN博客 【零基础】Python 多版本虚拟环境…