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 增加过滤器方法操作示例

    springboot 增加过滤器方法操作示例

    这篇文章主要介绍了springboot 增加过滤器方法操作,结合实例形式分析了springboot过滤器配置、加载等相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • springmvc+kindeditor文件上传实例详解

    springmvc+kindeditor文件上传实例详解

    这篇文章主要为大家详细介绍了springmvc+kindeditor文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • elk之实现在kibana高效精准查询日志

    elk之实现在kibana高效精准查询日志

    这篇文章主要介绍了elk之实现在kibana高效精准查询日志方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java读写pdf文件的详细实现方法

    Java读写pdf文件的详细实现方法

    最近公司的项目中需要操作pdf文件,所以这里给大家总结下方法,这篇文章主要给大家介绍了关于Java读写pdf文件的详细实现方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java Iterator迭代器_动力节点Java学院整理

    Java Iterator迭代器_动力节点Java学院整理

    迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,接下来通过本文给大家分享Java Iterator迭代器_动力节点Java学院整理,需要的朋友参考下吧
    2017-05-05
  • JAVA String类中的一些常用方法示例详解

    JAVA String类中的一些常用方法示例详解

    在我们的工作中,常常要对一个字符串进行一些操作,这里提供一些常用的方法,常常需要这些方法进行组合处理字符串,这篇文章主要给大家介绍了关于JAVA String类中的一些常用方法,需要的朋友可以参考下
    2023-10-10
  • 解决spring cloud zuul与nginx的域名转发问题

    解决spring cloud zuul与nginx的域名转发问题

    这篇文章主要介绍了spring cloud zuul与nginx的域名转发问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • nacos配置注册中心时指定命名空间不起作用的问题

    nacos配置注册中心时指定命名空间不起作用的问题

    这篇文章主要介绍了nacos配置注册中心时指定命名空间不起作用的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • 解决poi导出时单元格样式被覆盖问题

    解决poi导出时单元格样式被覆盖问题

    这篇文章主要介绍了解决poi导出时单元格样式被覆盖问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java 多态中继承的转型详解与用法分析

    Java 多态中继承的转型详解与用法分析

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
    2021-10-10

最新评论