Java中的@builder建造者模式详细解析

 更新时间:2024年01月30日 10:52:22   作者:小小懒懒  
这篇文章主要介绍了Java中的@builder建造者模式详细解析,使用 @Builder 注解可以简化手动编写建造者模式的代码,使代码更加简洁易读,它可以自动生成链式调用的方法来设置对象的属性,并且可以在需要时进行可选属性的设置,需要的朋友可以参考下

@Builder

@Builder 是 Lombok 提供的一个注解,用于自动生成建造者模式的相关代码。

通过在类上添加 @Builder 注解,Lombok 会自动生成一个内部静态类作为建造者,并在原始类中添加一个私有构造函数。

使用 @Builder 注解可以简化手动编写建造者模式的代码,使代码更加简洁易读。

它可以自动生成链式调用的方法来设置对象的属性,并且可以在需要时进行可选属性的设置。

@Builder 注解示例

下面是一个使用 @Builder 注解的示例:

import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Person {
    private String name;
    private int age;
    private String address;
    private String phoneNumber;
}

在上面的示例中,我们使用 @Builder 注解标注了 Person 类。Lombok 会自动生成一个内部静态类 PersonBuilder 作为建造者,并在 Person 类中添加一个私有构造函数。

现在,我们可以使用自动生成的建造者来创建 Person 对象,如下所示:

Person person = Person.builder()
    .name("John")
    .age(30)
    .address("123 Main St")
    .phoneNumber("555-1234")
    .build();

在上面的代码中,我们使用链式调用的方式设置 Person 对象的属性,并通过 build() 方法来构建最终的对象。build() 方法会返回一个 Person 对象。

@Builder 注解还具有其他一些可选的配置选项,例如可以使用 @Builder.Default 注解设置属性的默认值,可以使用 @Singular 注解处理集合类型的属性等。通过这些配置选项,可以进一步定制生成的建造者模式的代码。

需要注意的是,使用 @Builder 注解需要事先在项目中引入 Lombok 相关的依赖,并确保 IDE 配置中已启用 Lombok 插件,以使 Lombok 注解生效。

总而言之,@Builder 是 Lombok 提供的一个注解,用于自动生成建造者模式的相关代码。它可以简化手动编写建造者模式的代码,使代码更加简洁易读。通过使用 @Builder 注解,可以方便地创建和设置对象的属性,并生成最终的对象。

建造者模式使用示例

下面再举例一些使用建造者模式的例子:

创建用户对象(User):

import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class User {
    private String username;
    private String password;
    private String email;
    private boolean isActive;
}

通过 @Builder 注解,我们可以轻松创建用户对象,并使用链式调用设置属性。

构建图书对象(Book):

import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Book {
    private String title;
    private String author;
    private String publisher;
    private int year;
    private double price;
}

在这个示例中,我们使用 @Builder 注解创建了一个图书对象,并可以方便地设置图书的各个属性。

创建订单对象(Order):

import lombok.Builder;
import lombok.Getter;
import java.util.List;
@Getter
@Builder
public class Order {
    private String orderId;
    private List<String> items;
    private String customerName;
    private String shippingAddress;
}

通过 @Builder 注解,我们可以快速构建订单对象,并设置订单的各个属性。

构建配置对象(Configuration):

import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Configuration {
    private String appName;
    private String databaseUrl;
    private String username;
    private String password;
    private int port;
}

在这个示例中,我们使用 @Builder 注解创建了一个配置对象,并可以使用链式调用设置配置的各个属性。

通过使用 @Builder 注解,可以简化创建复杂对象的过程,并提供了一种清晰、简洁的方式来设置对象的属性。它遵循建造者模式的原则,将对象的构建过程与其表示分离,并提供了灵活性和可读性。同时,使用 Lombok 的 @Builder 注解还可以减少手动编写建造者模式的代码量。

到此这篇关于Java中的@builder建造者模式详细解析的文章就介绍到这了,更多相关@builder建造者模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot中json对象中对Long类型和String类型相互转换

    springboot中json对象中对Long类型和String类型相互转换

    与前端联调接口时,后端一些字段设计为Long类型,这样就有可能导致前端缺失精度,这时候我们就需要将Long类型返回给前端时做数据类型转换,本文主要介绍了springboot中json对象中对Long类型和String类型相互转换,感兴趣的可以了解一下
    2023-11-11
  • Java中spring boot 字符串判断是否为空方法小结

    Java中spring boot 字符串判断是否为空方法小结

    这篇文章主要介绍了Java中spring boot字符串判断是否为空,通过安装依赖,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • Java中的BigDecimal精度运算详解

    Java中的BigDecimal精度运算详解

    这篇文章主要介绍了Java中的BigDecimal精度运算详解,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算,双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理,需要的朋友可以参考下
    2023-10-10
  • Java控制台实现猜拳游戏小游戏

    Java控制台实现猜拳游戏小游戏

    这篇文章主要为大家详细介绍了Java控制台实现猜拳游戏小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • SpringBoot之Profile的两种使用方式详解

    SpringBoot之Profile的两种使用方式详解

    当在不同的环境下,想通过修改配置文件来连接不同的数据库,比如在开发过程中启动项目时,想连接开发环境对应的数据库,可以在配置文件中指定environment=dev,其他环境类似,此时就需要用到Spring为我们提供的Profile功能,本文给大家介绍了SpringBoot之Profile的两种使用方式
    2024-10-10
  • Java创建对象的几种方法

    Java创建对象的几种方法

    这篇文章主要为大家详细介绍了Java创建对象的几种方法,使用new创建、使用object.clone()创建、使用反序列化创建等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Spring MVC 文件上传下载的实例

    Spring MVC 文件上传下载的实例

    本篇文章主要介绍了Spring MVC 文件上传下载的实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • SpringBoot中Pageable分页参数的自动提取与全局复用

    SpringBoot中Pageable分页参数的自动提取与全局复用

    在现代 Web 应用开发中,分页是处理大量数据的标配功能,本文将带你实现 分页参数的自动提取、自定义配置与全局复用,感兴趣的小伙伴可以跟随小编一起学习一下
    2026-02-02
  • Reactor3 Map与FlatMap的区别示例详解

    Reactor3 Map与FlatMap的区别示例详解

    这篇文章主要为大家介绍了Reactor3 Map与FlatMap的区别示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • JAVA并发图解

    JAVA并发图解

    这篇文章主要介绍了JAVA的并发,文中图解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2021-09-09

最新评论