Java中builder的使用

简介: Java中builder的使用

什么是Builder模式?

builder模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离使用者可以一步一步的构建一个比较复杂的对象

例如有一个User类如下:

public class User {
  private String id ;
  private String name ;
  private Integer age ;
 // ignore getter/setter 
 }

Builder模式实现步骤

  1. User类中创建一个静态内部类 Builder
  2. Builder 类中,包含User类的全部属性
  3. Builder 类中,每个属性创建赋值方法,并返回当前对象 ,如:
public Builder id(String id) {
        this.id = id ;
        return this;
   }
  1. Builder 类中,每个属性创建赋值方法,并返回当前对象 ,如:
public Builder id(String id) {
        this.id = id ;
        return this;
   }
User类中,创建静态builder方法,返回Builder对象
• 1
public static Builder builder(){
        return new Builder();
  }
  1. 完整代码如下:
public class User {
  private String id ;
  private String name ;
  private Integer age ;
  public static Builder builder(){
    return new Builder();
  }
  public static class Builder{
    private String id ;
    private String name ;
    private Integer age ;
    public Builder id(String id) {
      this.id = id ;
      return this;
    }
    public Builder name(String name) {
      this.name = name ;
      return this ;
    }
    public Builder age(Integer age) {
      this.age = age ; 
      return this;
    }
    public User build() {
      return new User(this);
    }
    public User build2() {
      return new User(this.id , this.name , this.age);
    }
  }
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public Integer getAge() {
    return age;
  }
  public void setAge(Integer age) {
    this.age = age;
  }
  public User() {
    super();
  }
  public User(String id, String name, Integer age) {
    super();
    this.id = id;
    this.name = name;
    this.age = age;
  }
  public User(Builder builder) {
    this.id = builder.id;
    this.name = builder.name ;
    this.age = builder.age;
  }
}
  1. 如何使用:
public static void main(String[] args) {
    User user = User.builder()
                .id("11")
                .name("小明")
                .age(17)
                .build();
    System.out.println(user);
  }

总结

1、Builder 模式创建步骤:

在类中,创建一个静态内部类,包含外部类的全部属性;

在内部类中,为每一个属性进行赋值;

内部类中创建 build 方法,返回外部类对象

在外部类中创建静态 builder方法,返回内部类对象


2、Builder 模式调用步骤:

外部类调用静态builder方法创建内部类对象

内部对象.属性名 方法,进行赋值

调用 build 方法,完成外部类对象创建,并初始化赋值

3、快速生成代码插件推荐↓

相关文章
|
8月前
|
设计模式 安全 Java
构建未来应用:Java设计模式 - 建造者模式(Builder)在现代编程中的应用
【4月更文挑战第7天】建造者模式是提升代码质量的关键,尤其在复杂环境中。它分步骤构建对象,将构建与表示分离,适用于UI构建、数据模型组装、配置文件解析和网络请求构造等场景。最佳实践包括明确构建步骤、提供默认值、支持链式调用和确保线程安全。然而,过多步骤、不一致状态和性能问题是使用时需注意的问题。掌握建造者模式对于现代编程至关重要。
91 3
|
设计模式 缓存 Java
【设计模式——学习笔记】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)
163 0
|
2月前
|
Java 网络安全 Maven
Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.OkHttpClient$Builder.sslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/X509TrustManager;)Lokhttp3/OkHttpClient$Builder; 问题处理
【10月更文挑战第26天】Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.OkHttpClient$Builder.sslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/X509TrustManager;)Lokhttp3/OkHttpClient$Builder; 问题处理
52 2
|
8月前
|
设计模式 算法 Java
【设计模式】JAVA Design Patterns——Builder(构造器模式)
【设计模式】JAVA Design Patterns——Builder(构造器模式)
|
Java
一看就会的java8通用Builder
一看就会的java8通用Builder
101 0
|
设计模式 Java
Java建造者模式(Builder Pattern)
Java建造者模式(Builder Pattern)
|
设计模式 算法 Java
Java设计模式-建造者模式(Builder)
Java设计模式-建造者模式(Builder)
|
设计模式 Java
Java建造者模式(Builder pattern)
Java建造者模式(Builder pattern)
137 0
Java建造者模式(Builder pattern)
|
Java
Java中lombok @Builder注解使用详解
Java中lombok @Builder注解使用详解
411 0
|
测试技术 API
还在手写 Builder 模式?试试 Lombok 中的 @Builder 用法,太强了。。
还在手写 Builder 模式?试试 Lombok 中的 @Builder 用法,太强了。。
431 0