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

相关文章

  • 安卓系统中实现摇一摇画面振动效果的方法

    安卓系统中实现摇一摇画面振动效果的方法

    这篇文章主要介绍了安卓系统中实现摇一摇画面振动效果的方法,调用Android SDK中的SensorEventListener接口,需要的朋友可以参考下
    2015-07-07
  • Java多线程实现TCP网络Socket编程(C/S通信)

    Java多线程实现TCP网络Socket编程(C/S通信)

    这篇文章主要介绍了Java多线程实现TCP网络Socket编程(C/S通信),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    小编接到一个需求,需要实现用户在浏览器登录后,跳转到其他页面,当用户在其它地方又登录时,前面用户登录的页面退出登录,这篇文章主要介绍了SpringBoot+Vue+Redis实现单点登录,需要的朋友可以参考下
    2019-12-12
  • Java初学者入门之继承和多态

    Java初学者入门之继承和多态

    Java 面向对象编程有三大特性:封装、继承、多态,学好继承和多态是面向对象开发语言中非常重要的一个环节,这篇文章主要给大家介绍了关于Java初学者入门之继承和多态的相关资料,需要的朋友可以参考下
    2021-07-07
  • DUBBO 日志过滤器,输出dubbo 接口调用入参、出参等信息(最新推荐)

    DUBBO 日志过滤器,输出dubbo 接口调用入参、出参等信息(最新推荐)

    这篇文章主要介绍了DUBBO 日志过滤器,输出dubbo 接口调用入参、出参等信息,首先自定义一个过滤器 DubboLoggerFilter.java,本文结合示例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-12-12
  • Java7到Java17之Switch语句进化史示例详解

    Java7到Java17之Switch语句进化史示例详解

    这篇文章主要为大家介绍了Java7到Java17之Switch语句进化史示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 关于QueryWrapper高级使用示例

    关于QueryWrapper高级使用示例

    本文介绍了QueryWrapper的高级使用方法,包括查询指定字段、使用MySQL函数处理字段、设置查询限制等,通过select()可查询指定字段并处理,last()方法实现limit效果,apply()可在查询条件中使用函数,这些技巧有助于提升数据库操作的灵活性和效率
    2024-09-09
  • IDEA:Git stash 暂存分支修改的实现代码

    IDEA:Git stash 暂存分支修改的实现代码

    这篇文章主要介绍了IDEA:Git stash 暂存分支修改的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Spring Data JPA例子代码[基于Spring Boot、Mysql]

    Spring Data JPA例子代码[基于Spring Boot、Mysql]

    这篇文章主要介绍了Spring Data JPA例子代码[基于Spring Boot、Mysql],小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 带你了解Spring AOP的使用详解

    带你了解Spring AOP的使用详解

    这篇文章主要介绍了Spring AOP的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07

最新评论