建造者模式构建对象

目录

一、创建类

二、用法

三、完整代码


一、创建类

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();
相关推荐
勤劳打代码30 分钟前
妙笔生花 —— Flutter 实现飞入动画
前端·flutter·设计模式
某空_34 分钟前
【Android】使用ViewPager2实现简单的轮播图
java
武子康35 分钟前
Java-145 深入浅出 MongoDB 基本操作详解:数据库查看、切换、创建集合与删除完整教程
java·数据库·sql·mysql·mongodb·性能优化·系统架构
练习时长一年1 小时前
Spring内置功能
java·前端·spring
NiKo_W1 小时前
Linux 进程通信——基于建造者模式的信号量
linux·设计模式·建造者模式·system v
铉铉这波能秀1 小时前
如何在Android Studio中使用Gemini进行AI Coding
android·java·人工智能·ai·kotlin·app·android studio
rongqing20191 小时前
Google 智能体设计模式:探索与发现
人工智能·设计模式
_Yoke1 小时前
Java 枚举多态在系统中的实战演进:从枚举策略到自动注册
java·springboot·策略模式
人生导师yxc1 小时前
Java中Mock的写法
java·开发语言
青岛少儿编程-王老师2 小时前
CCF编程能力等级认证GESP—C++5级—20250927
java·数据结构·c++