建造者模式构建对象

目录

一、创建类

二、用法

三、完整代码


一、创建类

java 复制代码
@Builder
public class User {
    private final String name;
    private final int age;
    @Builder.Default private String address = "Unknown";
    @Builder.Default private String email = "N/A";
}

二、用法

(1) 链式调用:可读性高
java 复制代码
User user = User.builder()
    .name("Alice")
    .age(25)
    .address("New York")
    .email("[email protected]")
    .build();
  • 自文档化:代码即文档,无需查看类定义即可理解参数意义。
(2) 处理多参数和可选参数
  • 灵活构造:可选参数可以跳过,必填参数强制要求设置。

  • 避免"伸缩构造函数"问题(无需为不同参数组合重载多个构造函数)。

(3) 支持不可变对象
  • 对象一旦通过 build() 创建,所有属性变为 final,保证线程安全和状态一致性。

  • 普通 Setter 方法会破坏不可变性。

(4) 分离构造逻辑
  • 构造过程通过 Builder 类封装,与目标类解耦。

  • 可以在 build() 方法中添加校验逻辑,确保对象有效性。

三、完整代码

java 复制代码
@Builder
public class User {
    private final String name;
    private final int age;
    @Builder.Default private String address = "Unknown";
    @Builder.Default private String email = "N/A";
}

// 使用方式
User user = User.builder()
    .name("Alice")
    .age(25)
    .address("New York")
    .email("[email protected]")
    .build();
相关推荐
想躺平的小农30 分钟前
EasyExcel详解
java
慧一居士31 分钟前
EasyExcel集成使用总结与完整示例
java·excel
呦呦彬31 分钟前
【问题排查】easyexcel日志打印Empty row!
java·开发语言·log4j
九章云极AladdinEdu1 小时前
GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践
java·开发语言·人工智能·深度学习·测试工具·负载均衡·transformer
佩奇的技术笔记1 小时前
Java学习手册:客户端负载均衡
java·负载均衡
ghost1431 小时前
C#学习第23天:面向对象设计模式
开发语言·学习·设计模式·c#
可乐加.糖1 小时前
项目版本管理和Git分支管理方案
java·git·目标跟踪·gitlab·敏捷流程·源代码管理
wowocpp2 小时前
spring boot Controller 和 RestController 的区别
java·spring boot·后端
繁依Fanyi3 小时前
我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录
java·pdf·uni-app·生活·harmonyos·codebuddy首席试玩官
遗憾皆是温柔3 小时前
MyBatis—动态 SQL
java·数据库·ide·sql·mybatis