Builder设计模式

Java代码实现

  • Step_1:在类中创建一个静态内部类Builder,Builder类中要包含所在类的全部属性;

    public static class Builder{
        private String id;
        private String name;
    }
    

  • Step_2: Builder类要为每一个属性创建赋值方法,并返回当前对象(返回对象为Builder);

    public static class BUilder{
        
        ...
            
       public Builder id(String id){
           this.id = id;
           return this;
       }
       public Builder name(String name){
           this.name = name;
           return this;
       }  
    }
    

  • Step_3: Builder类中创建build方法,返回Person对象并赋值。有两种赋值方式;

    • 方式一:

      • return new 所在类全参构造器(this.属性,this.属性...);

        该方式需要所在类有一个全参构造器;

    • 方式二:

      • return new 所在类构造器(this);

        需要在所在类中创建一个参数为Builder的构造器;

        eg:

        public 所在类类名(Builder builder){

        ​ this.id = builder.id;

        ​ this.name = builder.name;

        ​ ...

        }

    public static class BUilder{
        
        ...
            
       public Student build(){
          return new Student(this);
       }
    }
    

  • Step_4: 在所在类中,创建静态builder方法,返回Builder对象。

    public static Builder builder(){
            return new Builder();
        }
    
    
    public static class BUilder{
        
        ...
            
       public Student build(){
          return new Student(this);
       }
    }
    

完整代码:

public class Student{

    private String id;
    private String name;

    public Student(){};


    public Student(Builder builder){
        this.id = builder.id;
        this.name = builder.name;
    }

    public static class Builder{
        private String id;
        private String name;

        public Builder id(String id){
            this.id = id;
            return this;
        }
        public Builder name(String name){
            this.name = name;
            return this;
        }

        public Student build(){
            return new Student(this);
        }
    }

    public static Builder builder(){
        return new Builder();
    }
    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}


如何使用:

@Test
public void builderStudentTest(){

    Student student = Student.builder()
              .id("0000")
              .name("王小明")
              .build();

    System.out.println(student);
}

Lombok实现

代码实现:

@Builder
@ToString
public class Employee{
    private String id;
    private String name;
    private Integer age;
    private String phone;
    private String address;
}

使用方式

@Test
    public void builderEmployeeTest(){
        Employee employee = Employee.builder()
                .id("0000")
                .name("Tom")
                .age(20)
                .phone("12344445555")
                .address("America")
                .build();
        System.out.println(employee);
    }

posted @   joudys  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示