建造者模式构建对象

目录

一、创建类

二、用法

三、完整代码


一、创建类

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("alice@example.com")
    .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("alice@example.com")
    .build();
相关推荐
float_com4 分钟前
【java基础语法】------ 数组
java
Adellle8 分钟前
2.单例模式
java·开发语言·单例模式
零雲18 分钟前
java面试:有了解过RocketMq架构么?详细讲解一下
java·面试·java-rocketmq
Deamon Tree29 分钟前
HBase 核心架构和增删改查
java·hbase
卡卡酷卡BUG1 小时前
Java 后端面试干货:四大核心模块高频考点深度解析
java·开发语言·面试
Yolo566Q1 小时前
OpenLCA生命周期评估模型构建与分析
java·开发语言·人工智能
lang201509281 小时前
Spring Boot日志配置完全指南
java·spring boot·单元测试
在坚持一下我可没意见1 小时前
HTTP 协议基本格式与 Fiddler 抓包工具实战指南
java·开发语言·网络协议·tcp/ip·http·java-ee·fiddler
蓝-萧2 小时前
Plugin ‘mysql_native_password‘ is not loaded`
java·后端
故事不长丨2 小时前
【Java SpringBoot+Vue 实现视频文件上传与存储】
java·javascript·spring boot·vscode·后端·vue·intellij-idea