常用JavaBean赋值方式
这种方式是最常用的创建对象的方法。只需要使用无参构造函数,然后为每个成员变量设置setter方法。比如有一个User类
User user = new User();
user.setName("大乐");
user.setQQ("12345678");
user.setEmail("12345678@qq.com");
user.setWork("click");
这种只有几个字段的还好,如果这个类有十多个字段甚至更多的时候,就很难受了。
这种方式非常普遍,但是存在一个很明显的问题,对于某个Bean我们可以在任何场景,任何边界之外进行set的操作,这样就显得非常难以管理了,也不符合我们领域化设计的思想
Builder赋值
我们需要在目标对象内部创建了一个静态类,通常简单地称为Builder。Builder声明了一系列方法来设置对象属性的值,然后将其返回Builder本身,完成所有调用后,我们调用Builder的无参build方法进行目标对象的初始化。
上述的user赋值就可以这样赋值
User user = User.builder()
.name("大乐")
.qq("12345678")
.email("12345678@qq.com")
.work("click")
.build();
链式结构写法比传统写法要优雅,而且减少了冗余代码,当然这需要lombok中的@Builder注解
@Builder
public class User{
}