Builder建造者模式

ops/2024/9/20 3:52:43/ 标签: 建造者模式, java, 开发语言

Builder是内部类,用来构造类。

Builder的作用就是:默认属性代替设置属性,清晰代码意图。
构造方法中只设置必须参数(可以设置为final),在构造后再set可选初始化数据,每一个set返回一个Builder(this),从而可以依次连续build。
通过默认值和new的参数,将必须参数和可选参数分离。
将构造过程和属性配置分离。

public class Car {// 必要参数private final String engine;private final String wheels;// 可选参数private final boolean airbags;private final boolean sunroof;// 私有构造函数,只有Builder可以访问private Car(CarBuilder builder) {this.engine = builder.engine;this.wheels = builder.wheels;this.airbags = builder.airbags;this.sunroof = builder.sunroof;}// 静态嵌套Builder类public static class CarBuilder {// 必要参数private final String engine;private final String wheels;// 可选参数,默认值为falseprivate boolean airbags = false;private boolean sunroof = false;// Builder构造函数,传入必要参数public CarBuilder(String engine, String wheels) {this.engine = engine;this.wheels = wheels;}// 设置可选参数的方法public CarBuilder setAirbags(boolean airbags) {this.airbags = airbags;return this;}public CarBuilder setSunroof(boolean sunroof) {this.sunroof = sunroof;return this;}// 构建方法,返回最终的Car对象public Car build() {return new Car(this);}}}

http://www.ppmy.cn/ops/41492.html

相关文章

REACT 在组件之间共享状态

有时,您希望两个组件的状态始终一起变化。要做到这一点,请从他们俩身上删除状态,将其移动到他们最近的共同父级,然后通过道具将其传递给他们。这被称为提升状态,这是编写 React 代码时最常见的事情之一。 举例提升状态…

Linux基础之进程-进程状态

目录 一、进程状态 1.1 什么是进程状态 1.2 运行状态 1.2 阻塞状态 1.3 挂起状态 二、Linux操作系统上具体的进程状态 2.1 状态 2.2 R 和 S 状态的查看 2.3 后台进程和前台进程 2.4 休眠状态和深度休眠状态 一、进程状态 1.1 什么是进程状态 首先我们知道我们的操作系…

Ai绘画工具Stable Diffusion提示词如何使用

Stable Diffusion是一种基于深度学习的AI绘画工具,它可以根据用户提供的提示词(prompt)生成相应的图像。提示词是引导AI生成图像的关键,正确的使用和调试提示词对于获得满意的结果至关重要。本文将介绍如何使用和调试Stable Diffu…

【案例】使用Vue实现拖拽课表

效果展示 效果说明 点击左侧的课程并进行拖拽,拖拽到要开设本课程的地方然后松手,即可将本节课设置为当前所拖拽的科目并且背景色为当前科目的背景色,当多次拖拽到同一节课的时候将会实现后者覆盖前者的效果。 效果实现代码 第一步&#x…

Android JNI实现线程内部调用JAVA方法

JNILib.java class JNILib() {external fun start(callBack: DataCallBack):Intinterface DataCallBack{fun onData(type:Int,data:ByteArray)} }jni.cpp static MessageUtil messageUtil; // 全局变量,表示 Java 虚拟机 JavaVM* g_vm nullptr; // 用于保存回调对…

618值得入手的数码有哪些?数码好物清单推荐|款款实用闭眼冲

每年的618购物节都是消费者们翘首以盼的盛宴,这一天,各大品牌和电商平台都会推出极具吸引力的优惠活动,让消费者们能够以更优惠的价格购买到心仪的数码好物,为了帮助大家在这个购物狂欢节中挑选到真正实用、性价比高的数码产品&am…

华为涅槃,余承东重生

最近一段时间,余承东甚为低调。最为明显的是,“遥遥领先”已经听不到了,“余大嘴”口中的措辞越来越克制。 今后手机相关的发布会,或许不再看到余承东的身影。 5月10日,余承东的职位正式更新,从终端BG CE…

分布式数据库有哪几种

数据库的发展从早期的单机数据库,到现在的分布式数据库。在单机数据库时代,所有的数据都存储在单机中,随着计算机技术的发展,开始出现了多台计算机联合处理数据的需求,从而诞生了分布式数据库。 分布式数据库是将多个…

C++:异常

C 异常处理机制是一种用于处理程序运行过程中出现异常情况的技术;异常是指程序在运行过程中发生的不正常情况,如除零错误、访问无效内存、文件不存在等。异常处理机制允许程序在发生异常时执行特定的操作,以便使程序更加健壮和可靠。 C 中的…

CheckStyle静态样式之道

优质博文:IT-BLOG-CN 在标准化的统一样式检查规范里,最为常用的统一样式工具是checkstyle插件,而不是国内阿里的代码规约插件。 【1】下载插件 【2】配置生效 配置生效及告警设置 【3】配置checkstyle.xml 官网地址 官网最新Releases 下面…

论文阅读记录--关于水文系统的传递函数

文章目录 J-schuite的文章,地下水系统的响应的功率谱分析--传递函数1. 什么是冲激响应函数与传递函数?2. 地下水流系统中传递函数的求解3. J-schuite文章中传递函数的复现J-schuite的文章,地下水系统的响应的功率谱分析–传递函数 1. 什么是冲激响应函数与传递函数? 在信号…

一篇搞懂Web3那些东西

目录 Web3 区块链 加密货币 Web3钱包 以太坊 智能合约 DAPP 身为开发人员,直活在web2.0有什么意思,于是我打算一下子弄懂Web3.0这些东西。无论你的前端还是后端我觉得都值得一看! Web3 Web3 已成为一个包罗万象的术语,代…

nginx相关配置及高并发优化

TOC 早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业…

以管理员身份运行设置

在使用非 Administrator 用户操作情况下: 举个例子,因为每次想要以管理员身份运行命令提示符,都要右键选择才行,有点麻烦。 可以设置每次点开就是以管理员身份运行命令提示符,操作如下: 1.Win R 输入 s…

IPSSL证书:为特定IP地址通信数据保驾护航

IPSSL证书,顾名思义,是专为特定IP地址设计的SSL证书。它不仅继承了传统SSL证书验证网站身份、加密数据传输的基本功能,还特别针对通过固定IP地址进行通信的场景提供了强化的安全保障。在IP地址直接绑定SSL证书的模式下,它能够确保…

Visual Studio C++ 2019进行安装

Visual Studio C 2019进行下载安装 链接:https://my.visualstudio.com/Downloads?qvisual%20studio%202017&wt.mc_idomsftvscom~older-downloads

5.9网络协议

由网卡发送数据通过网线进行发送,当网卡接收到信号以后将数据传给内核数据区,然后由操作系统交给相应的进程。 将数据进行发送的时候需要借助于网线实现,这个时候会出现当传输的数据比较远的时候就借助于中继器将信号进行再生扩大&#xff0…

图文详解JUC:Wait与Sleep的区别与细节

目录 一.Wait() 二.Sleep() 三.总结Wait()与Sleep()的区别 一.Wait() 在Java中,wait() 方法是 Object类中的一个方法,用于线程间的协作。当一个线程调用wait() 方法时,它会释放对象的锁并进入等待状态,直到其他线程调用相同对…

GPT-4o API 全新版本发布:提升性能,增加性价比

5月13日,OpenAI 发布了全新ChatGPT模型 GPT-4o,它在响应速度和多媒体理解上都有显著提升。在这篇文章中,我们将介绍 GPT-4o 的主要特点及其 API 集成方式。 什么是 GPT-4o? GPT-4o 是 OpenAI 于5月13日发布的最新多模态 AI 模型…

软件3班20240513

java.util.PropertyResourceBundle4554617c package com.yanyu;import java.sql.*; import java.util.ResourceBundle;public class JDBCTest01 {public static void main(String[] args) throws SQLException { // 获取属性配置文件ResourceBundle bundle Res…