当前位置: 首页 > news >正文

Java 设计模式 构建者模式

文章目录

  • 1 概念
  • 2 使用方法
        • 1 创建步骤:
        • 2 使用步骤:
  • 参考

1 概念

builder模式又叫建造者模式,属于创建型模式

作用:将一个复杂对象的构建与他的表示分离,可以一步一步构建对象,而不是使用构造函数构造一次性构造

通过一步步构造复杂对象,使得代码更加清晰,避免构造器中参数过多导致代码的可读性和易用性变差

2 使用方法

1 创建步骤:
User user = User.builder().property(property).build();
  1. 创建静态内部类Builder,并创建静态方法builder
  2. 实现私有构造方法,并使用Builder作为参数
  3. 静态内部类使用属性名作为方法名,并传入属性
  4. 静态内部类实现build方法,返回创建的对象
2 使用步骤:
  1. 外部使用.builder 获取Builder
  2. 使用.property(property) 及进行赋值
  3. 调用.build 构建并返回类对象

Demo:


public class User{private int id;private String name;private int age;// 1 构建匿名内部类, 属性与User类属性一直public static class Builder {private int id;private String name;private int age;public Builder id(int id) {this.id = id;return this;}public Builder name(String name) {this.name = name;return this;}public Builder age(int age) {this.age = age;return this;}// 4 最终构建返回public User build() {return new User(this);}}// 2 创建静态builder方法,返回Builder类进行构造public static Builder builder() {return new Builder();}// 3 构造私有构造方法,将Builder中的属性进行赋值private User(Builder builder) {this.id = builder.id;this.name = builder.name;this.age = builder.age;}}

参考

Builder模式 Java Builder 模式 https://blog.csdn.net/HaHa_Sir/article/details/120105014

相关文章:

Java 设计模式 构建者模式

文章目录 1 概念2 使用方法1 创建步骤:2 使用步骤: 参考 1 概念 builder模式又叫建造者模式,属于创建型模式 作用:将一个复杂对象的构建与他的表示分离,可以一步一步构建对象,而不是使用构造函数构造一次…...

建设企业网站如何建

首先,企业网站是企业数字化转型的重要组成部分。在数字化浪潮的冲击下,企业需要通过建设网站来实现信息化管理,提高工作效率。通过企业网站,企业可以便捷地发布最新产品信息、公司新闻、招聘信息等,极大地提升了信息传…...

C++ inline 的更进一步理解

文章目录 1.概述2.ODR(One Definition Rule)问题3.范例测试代码4.好坏分析 ODR: One Definition Rule,即单一定义规则, C 语言中非常重要的一项规则,它确保程序的行为一致性并避免链接时出现冲突。ODR 的核心思想是在整个程序中,每…...

海康威视云台相机图像获取

直接上代码: import cv2# 替换为正确的RTSP链接 rtsp_url rtsp://admin:abcd12345192.168.1.64:554/h264/ch1/main/av_stream cap cv2.VideoCapture(rtsp_url)if not cap.isOpened():print("无法打开视频流,检查RTSP URL和凭证") else:whil…...

什么是词嵌入(Word Embedding)

1. 什么是词嵌入(Word Embedding) ⾃然语⾔是⼀套⽤来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是⽤来表⽰词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌⼊(word e…...

LSTM时间序列模型实战——预测上证指数走势

LSTM时间序列模型实战——预测上证指数走势 关于作者 作者:小白熊 作者简介:精通python、matlab、c#语言,擅长机器学习,深度学习,机器视觉,目标检测,图像分类,姿态识别,…...

基于 STM32F407 的 SPI Flash下载算法

目录 一、概述二、自制 FLM 文件1、修改使用的芯片2、修改输出算法的名称3、其它设置4、修改配置文件 FlashDev.c5、文件 FlashPrg.c 的实现 三、验证算法 一、概述 本文将介绍如何使用 MDK 创建 STM32F407 的 SPI Flash 下载算法。 其中,SPI Flash 芯片使用的是 W…...

力扣之1355.活动参与者

题目: Sql 测试用例: Create table If Not Exists Friends (id int, name varchar(30), activity varchar(30)); Create table If Not Exists Activities (id int, name varchar(30)); Truncate table Friends; insert into Friends (id, name, acti…...

数据资产治理:构建敏捷与安全的数据管理体系

在当今数字化的盛况下,作为核心资产的数据已经越发受到企业的重视。但是随着公司的逐步壮大,如何分析这些数据以及如何有效治理数据资产,以确保安全性、合规性以及易用性,是企业面临的重大挑战。数聚股份将从多年从业经验深度探讨…...

Nodejs连接Mysql笔记

框架搭建 安装Node.js 首先,确保你已经在系统上安装了Node.js和npm(Node Packaged Modules)。你可以通过以下命令检查是否已经安装:shell 或者 node -v 或者 npm -v 数据库连接代码 1.导入MySQL2库 npm install mysql2 2.在文件…...

Canvas:AI协作的新维度

在人工智能的浪潮中,OpenAI的最新力作Canvas,不仅是一款新工具,它标志着人工智能协作方式的一次革命性飞跃。Canvas为写作和编程提供了一个全新的交互界面,让用户能够与ChatGPT进行更紧密、更直观的协作。 ​​​​​​​ Canvas的…...

【深度学习】— softmax回归、网络架构、softmax 运算、小批量样本的向量化、交叉熵

【深度学习】— softmax回归、网络架构、softmax 运算、小批量样本的向量化、交叉熵 3.4 Softmax 回归3.4.1 分类问题3.4.2 网络架构 3.4.3 全连接层的参数开销3.4.4 softmax 运算3.4.5 小批量样本的向量化3.4.6 损失函数对数似然softmax 的导数 3.4.7 信息论基础熵信息量重新审…...

C# Wpf 图片按照鼠标中心缩放和平移

C# Wpf 图片按照鼠标中心缩放和平移 1、缩放事件 MouseWheel(object sender, MouseWheelEventArgs e)2、平移相关的事件 MouseMove(object sender, MouseEventArgs e) MouseDown(object sender, MouseButtonEventArgs e) MouseUp(object sender, MouseButtonEventArgs e)3、…...

网络安全产品类型

1. 防火墙(Firewall) 功能:防火墙是网络安全的第一道防线,通过检查进出网络的流量来阻止未经授权的访问。它可以基于预定义的安全规则,过滤数据包和阻止恶意通信。 类型: 硬件防火墙:以专用设备…...

【开源风云】从若依系列脚手架汲取编程之道(五)

📕开源风云系列 🍊本系列将从开源名将若依出发,探究优质开源项目脚手架汲取编程之道。 🍉从不分离版本开写到前后端分离版,再到微服务版本,乃至其中好玩的一系列增强Plus操作。 🍈希望你具备如下…...

金融市场的衍生品交易及其风险管理探讨

金融衍生品市场是现代金融体系的重要组成部分,其交易量和复杂性在过去几十年中迅速增长。衍生品,如期权、期货、掉期等,因其灵活性和杠杆效应,广泛应用于风险管理、投机和资产配置等多个领域。本文将探讨金融衍生品交易的关键特点…...

一、创建型(单例模式)

单例模式 概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。它控制类的实例化过程,防止外部代码创建新的实例。 应用场景 日志记录:确保只有一个日志记录器,以便于管理和避免重复记…...

毕业设计项目-古典舞在线交流平台的设计与实现(源码/论文)

项目简介 基于springboot实现的,主要功能如下: 技术栈 后端框框:springboot/mybatis 前端框架:html/JavaScript/Css/vue/elementui 运行环境:JDK1.8/MySQL5.7/idea(可选)/Maven3&#xff08…...

【秋招笔试】10.09华子秋招(已改编)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的三题全部上线…...

【算法笔记】双指针算法深度剖析

【算法笔记】双指针算法深度剖析 🔥个人主页:大白的编程日记 🔥专栏:算法笔记 文章目录 【算法笔记】双指针算法深度剖析前言一.移动零1.1题目1.2思路分析1.3代码实现 二.复写零2.1题目2.2思路分析2.3代码实现 三.快乐数3.1题目…...

大厂AI团队配置揭秘:揭秘“预训练→后训练→推理部署→多模态扩展“的技术链路拆分逻辑!

大模型AI技术链路包含预训练、后训练、推理部署、多模态扩展四个不可逆环节,对技术能力和GPU资源需求各异。大厂将AI部门拆分为独立团队,以适配链路原理、提升研发效率。预训练团队负责构建通用基座模型,后训练团队进行能力校准,推…...

Amlogic S9XXX设备Armbian系统刷机全攻略:从问题诊断到优化配置

Amlogic S9XXX设备Armbian系统刷机全攻略:从问题诊断到优化配置 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l,…...

OpCore-Simplify:3步搞定黑苹果EFI配置,告别繁琐手动调试

OpCore-Simplify:3步搞定黑苹果EFI配置,告别繁琐手动调试 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经被黑苹果复…...

网页录音录像软件

https://www.apowersoft.cn/free-audio-recorder-online...

忍者像素绘卷效果实测:同一Prompt下不同步数对像素锐度影响对比分析

忍者像素绘卷效果实测:同一Prompt下不同步数对像素锐度影响对比分析 1. 测试背景与目的 忍者像素绘卷作为一款基于Z-Image-Turbo深度优化的图像生成工具,其独特的16-Bit复古游戏美学风格吸引了大量创作者。在实际使用中,我们发现"描绘…...

基于CasRel的微信小程序开发:智能合同关键信息抽取工具

基于CasRel的微信小程序开发:智能合同关键信息抽取工具 1. 引言 你有没有过这样的经历?面对一份几十页的合同,需要手动找出甲方、乙方、合同金额、签约日期、违约责任条款……一页页翻,一行行看,不仅耗时费力&#x…...

Precor必确 GLUTEBUILDER 系列,带来系统化臀部训练解决方案

在健身训练不断细分的当下,臀部训练早已不再是“顺带练一练”的附属项目,而是被置于与胸、背、腿同等重要的核心地位。然而,真正高效的臀腿训练,从来不是简单堆叠负重,而是建立在精准发力与动作模式科学之上的系统工程…...

从手机拍照到专业扫描:5种主流三维重建数据集的‘幕后’采集故事与技术选型

从手机拍照到专业扫描:5种主流三维重建数据集的‘幕后’采集故事与技术选型 在数字孪生和元宇宙技术快速发展的今天,高质量三维重建数据集已成为计算机视觉领域的战略资源。不同于普通用户随手拍摄的二维照片,专业级三维数据集背后隐藏着精密…...

小模型大能力:DeepSeek-R1-Distill-Qwen-1.5B在边缘计算中的应用

小模型大能力:DeepSeek-R1-Distill-Qwen-1.5B在边缘计算中的应用 1. 引言:边缘计算时代的轻量级AI解决方案 在AI技术快速发展的今天,大模型已经展现出惊人的能力。然而,当我们把目光投向边缘计算场景时,传统的百亿参…...

五步解锁老旧Mac新生:OpenCore Legacy Patcher实战指南

五步解锁老旧Mac新生:OpenCore Legacy Patcher实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如何让苹果官方已停更的老旧Mac设备重新焕…...