一、對象的建立方法
- new Object()
- 工廠模式
- 建造者模式
二、優劣性
2.1 直接建立對象
- 構造方法多個參數時無法明确含義,比如
和Object(String name, String phone)
Object(String name, String addr)
- 當參數大于4個時,需要組合所有參數的構造方法,造成代碼太大
2.2 使用工廠模式
可以通過定義方法
newInstance
和
getInstance
來确定單例還是多例,再則可以通過方法名來差別方法參數
2.3 建造者模式
- 支援鍊式表達式
- 當多線程環境對共享變量進行初始化操作時,可能将未完全初始化的對象暴露出去造成安全問題,這是可以使用建造者模式來保證對象指派時一定是初始化完成後。
三、Lombok的@Builder和@Accessors差別
3.1@Builder
@Builder就是基于建造者模式支援鍊式操作,但很多時候都是構造失血模式的
Bean
或者沒有共享變量,這時候為了鍊式操作就建立一個
builder
是不是有點大材小用