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建造者模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用MyBatis进行不同条件的like模糊查询的方法

    利用MyBatis进行不同条件的like模糊查询的方法

    这篇文章主要介绍了利用MyBatis进行不同条件的like模糊查询,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • SpringBoot整合Swagger3的流程详解

    SpringBoot整合Swagger3的流程详解

    这篇文章主要介绍了SpringBoot整合Swagger3的流程详解,Swagger最核心的类就是Docket、它可以配置作者信息、扫描类型,在SwaggerConfig配置类,添加@Configuration和@EnableOpenApi注解,需要的朋友可以参考下
    2024-01-01
  • Java使用connectTo方法提高代码可续性详解

    Java使用connectTo方法提高代码可续性详解

    这篇文章主要介绍了Java使用connectTo方法提高代码可续性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 详解利用spring-security解决CSRF问题

    详解利用spring-security解决CSRF问题

    这篇文章主要介绍了详解利用spring-security解决CSRF问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • SpringCloud Finchley Gateway 缓存请求Body和Form表单的实现

    SpringCloud Finchley Gateway 缓存请求Body和Form表单的实现

    在接入Spring-Cloud-Gateway时,可能有需求进行缓存Json-Body数据或者Form-Urlencoded数据的情况。这篇文章主要介绍了SpringCloud Finchley Gateway 缓存请求Body和Form表单的实现,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Spring-Cloud-Function-Spel 漏洞环境搭建

    Spring-Cloud-Function-Spel 漏洞环境搭建

    这篇文章主要介绍了Spring-Cloud-Function-Spel 漏洞复现及搭建方法,搭建方法也很简单,首先需要安装maven jdk,具体安装过程跟随小编一起看看吧
    2022-03-03
  • Java线程池复用线程的秘密你知道吗

    Java线程池复用线程的秘密你知道吗

    这篇文章主要为大家详细介绍了Java线程池复用线程的秘密,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望您能够多多关注

    2022-03-03
  • IDEA中如何引入spring的命名空间

    IDEA中如何引入spring的命名空间

    这篇文章主要介绍了IDEA中如何引入spring的命名空间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 如何把Java程序窗口在屏幕中间显示

    如何把Java程序窗口在屏幕中间显示

    大家在日常Java开发中,可能会需要把程序窗口定位在屏幕中间,那该如何操作呢,下面来一起看看。
    2016-08-08
  • Netty分布式ByteBuf中PooledByteBufAllocator剖析

    Netty分布式ByteBuf中PooledByteBufAllocator剖析

    这篇文章主要为大家介绍了Netty分布式ByteBuf剖析PooledByteBufAllocator简述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03

最新评论