当前位置:首页 > Java

builder如何构建java

2026-03-22 09:14:21Java

使用Builder模式构建Java对象

Builder模式是一种创建型设计模式,用于构建复杂对象。它通过分离对象的构建过程和表示,使得相同的构建过程可以创建不同的表示。

定义Builder类

创建一个静态内部类作为Builder,包含与外部类相同的字段。为每个字段提供设置方法,并返回Builder实例以实现链式调用。

public class User {
    private final String firstName;
    private final String lastName;
    private final int age;
    private final String phone;
    private final String address;

    private User(UserBuilder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.age = builder.age;
        this.phone = builder.phone;
        this.address = builder.address;
    }

    public static class UserBuilder {
        private String firstName;
        private String lastName;
        private int age;
        private String phone;
        private String address;

        public UserBuilder firstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public UserBuilder lastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        public UserBuilder age(int age) {
            this.age = age;
            return this;
        }

        public UserBuilder phone(String phone) {
            this.phone = phone;
            return this;
        }

        public UserBuilder address(String address) {
            this.address = address;
            return this;
        }

        public User build() {
            return new User(this);
        }
    }
}

使用Builder创建对象

通过链式调用Builder的方法设置属性,最后调用build()方法创建对象实例。

User user = new User.UserBuilder()
    .firstName("John")
    .lastName("Doe")
    .age(30)
    .phone("1234567")
    .address("123 Main St")
    .build();

验证构建参数

可以在build()方法中添加参数验证逻辑,确保构建的对象满足特定条件。

public User build() {
    if (firstName == null || lastName == null) {
        throw new IllegalStateException("First and last name are required");
    }
    if (age < 0) {
        throw new IllegalStateException("Age cannot be negative");
    }
    return new User(this);
}

使用Lombok简化Builder

如果使用Lombok库,可以通过注解自动生成Builder模式代码。

import lombok.Builder;
import lombok.ToString;

@Builder
@ToString
public class User {
    private final String firstName;
    private final String lastName;
    private final int age;
    private final String phone;
    private final String address;
}

使用Lombok生成的Builder:

User user = User.builder()
    .firstName("John")
    .lastName("Doe")
    .age(30)
    .phone("1234567")
    .address("123 Main St")
    .build();

不可变对象与Builder

Builder模式特别适合创建不可变对象,因为所有字段都可以在构造函数中一次性设置,并且声明为final。

builder如何构建java

public class ImmutableUser {
    private final String name;
    private final String email;

    private ImmutableUser(Builder builder) {
        this.name = builder.name;
        this.email = builder.email;
    }

    public static class Builder {
        private String name;
        private String email;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder email(String email) {
            this.email = email;
            return this;
        }

        public ImmutableUser build() {
            return new ImmutableUser(this);
        }
    }
}

标签: builderjava
分享给朋友:

相关文章

如何学java

如何学java

学习Java的基础知识 Java是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功: j…

php 实现 java md5

php 实现 java md5

在 PHP 中实现与 Java 相同的 MD5 哈希算法,关键在于确保编码和输出格式的一致性。以下是具体实现方法和注意事项: 确保字符串编码一致 Java 的 String.getBytes() 默…

php 实现java md5加密

php 实现java md5加密

PHP 实现 Java MD5 加密的兼容方法 Java 和 PHP 的 MD5 加密结果可能存在差异,主要因字符编码或输出格式不同。以下是确保两者结果一致的方法: 使用 hash 函数并处理编码…