天天看点

@Builder和@Accessors那个更香

一、对象的创建方法

  1. new Object()
  2. 工厂模式
  3. 建造者模式

二、优劣性

2.1 直接创建对象

  1. 构造方法多个参数时无法明确含义,比如​

    ​Object(String name, String phone)​

    ​​和​

    ​Object(String name, String addr)​

  2. 当参数大于4个时,需要组合所有参数的构造方法,造成代码太大

2.2 使用工厂模式

可以通过定义方法​

​newInstance​

​​和​

​getInstance​

​来确定单例还是多例,再则可以通过方法名来区别方法参数

2.3 建造者模式

  1. 支持链式表达式
  2. 当多线程环境对共享变量进行初始化操作时,可能将未完全初始化的对象暴露出去造成安全问题,这是可以使用建造者模式来保证对象赋值时一定是初始化完成后。

三、Lombok的@Builder和@Accessors区别

3.1@Builder

@Builder就是基于建造者模式支持链式操作,但很多时候都是构造失血模式的​

​Bean​

​​或者没有共享变量,这时候为了链式操作就新建一个​

​builder​

​是不是有点大材小用

3.2@Accessors

四、坑

继续阅读