Lombok与建造者模式详解

什么是Lombok

Lombok 是一个 Java 编程语言的库,它可以帮助我们生成一些常见的代码,例如 Getter、Setter、toString 等方法,以及构造方法、Builder 等模式,大大减少代码量,提高开发效率。
假如我们声明一个User类,需要为它写出对应的get和set方法:

public class User {
    
    
    private String name;
    private int age;
    
 	public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
}

而加上@Data注解后,我们就可以不用再写 Getter、Setter、toString 等方法,Lombok 会自动为我们生成这些代码,而且这些代码都是符合 Java Bean 规范的。

@Data
public class User {
    
    
    private String name;
    private int age;
}

// 直接使用其Setter Getter方法
User user = new User();
user.setName("John Doe");
user.setAge(30);

String name = user.getName();
int age = user.getAge();

使用 Lombok 的好处不仅仅是减少了代码量,而且代码更加简洁,更易于维护。

建造者模式

顾名思义,建造者模式就是实例化一个类对象,并且为该对象的属性赋值。相当于拼积木,把需要的零件积木(对象属性)一个一个装上去。
建造者模式的实现有很多种方法,下面是一种常见的实现方法:

public class User {
    
    
    private String name;
    private int age;
    private String email;

    private User(UserBuilder builder) {
    
    
        this.name = builder.name;
        this.age = builder.age;
        this.email = builder.email;
    }

    public static class UserBuilder {
    
    
        private String name;
        private int age;
        private String email;

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

        public UserBuilder age(int age) {
    
    
            this.age = age;
            return this;
        }

        public UserBuilder email(String email) {
    
    
            this.email = email;
            return this;
        }

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

    // getter and setter methods
}

在上面的代码中,我们定义了一个 User 类和一个 UserBuilder 静态内部类。UserBuilder 类包含了 User 类的所有属性,并通过它的 setter 方法来设置这些属性。
最后,通过 UserBuilder 类的 build() 方法来创建 User 对象:

User user = new User.UserBuilder()
                .name("John")
                .age(30)
                .email("[email protected]")
                .build();

从上面的代码可以看出,我们通过 new User.UserBuilder() 来获取一个 UserBuilder 对象,然后通过调用它的 setter 方法设置 User 对象的属性,最后通过 build() 方法创建 User 对象。
总的来说,建造者模式是一种创建复杂对象的高效方法,它可以通过分步骤的方式构建一个复杂的对象,并最终组合成一个完整的对象。

为什么需要建造者模式呢?

1.通过建造者模式创建对象时,可以根据需要只对必要的属性进行赋值,而不用对所有属性都进行赋值(定制化)。这样可以避免浪费,提高代码的可读性和可维护性。
2.同时,建造者模式还可以使代码的执行效率更高,因为创建对象时不需要重复地调用多个 setter 方法,而是只需要调用一次 build() 方法即可。

利用Lombok实现建造者模式

显然以上那种实现建造者模式的方法构建一个对象显得代码臃肿,这时候Lombok便可大展神威了。
@Builder 注解是 Lombok 中的另一个强大功能,可以帮助我们构建复杂对象。
还是上述的User类:

import lombok.Builder;
import lombok.ToString;

@Builder
@Data
public class User {
    
    
    private String name;
    private int age;
    private String email;
}

创建User对象:

User user = User.builder()
                .name("John")
                .age(30)
                .email("[email protected]")
                .build();

使用 @Builder 注解后,Lombok 会自动为我们生成一个 Builder 类,我们可以通过该类的方法链式调用来设置 Book 对象的字段值,最后调用 build() 方法来创建 Book 对象。
可以注意到使用@Builder后不仅不用写Setter、Getter方法,实现建造者模式也不需要提供一个UserBuilder()内部类
@Builder 注解实际上就是对建造者模式的一种封装,不需要我们手写代码来实现建造者模式,Lombok 会自动帮助我们实现。
使用 @Builder 注解生成的 Builder 类实际上是一种典型的建造者模式。它包含了一系列用于设置对象属性的方法,最后通过 build() 方法将这些属性组合成一个对象。

猜你喜欢

转载自blog.csdn.net/juggle_gap_horse/article/details/128967942