天天看點

@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

四、坑

繼續閱讀