Effective Java——第二條
阿新 • • 發佈:2019-02-02
—建立和銷燬物件—
第二條
JavaBean模式在構造過程被分解到了幾個呼叫中,在構造過程中JavaBean可能處於不一致的狀態。
解釋:JavaBean建立的物件是出於不穩定的狀態(物件屬性可以隨意改變),而Builder模式建立的物件是不可改變的(物件不可變):
new Request.Builder()
.url("http://www.weather.com.cn/data/sk/101010100.html")
.addHeader("header","header")
.put("RequestBody")
.build();
1、重疊構造器(構造器過載)
構造器過載
2、JavaBean模式
javabean模式,使用set方法來初始化成員,缺點是構造過程中javabean可能處於不一致狀態(可以理解成該模式下成員的設定的分步進行的,可能某處使用到該類的某個成員時其還未被初始化),並且該模式阻止了把類變成不可能的可能,需要考慮執行緒安全。
3、Builder模式
類裡定義一個靜態類builder(其實就是javabean),對builder初始化完成後使用build()返回該類,Buidler模式的狀態不一致是builder,而不是類本身,並且類自身的成員也可設定成final。
4、不可變類,可變類。
不可變類:String是不可變類,改類物件一旦建立,屬性就不可改變。
可變類:物件建立後,屬性可以任意修改。
不可變類優缺點:構造、測試、使用都很簡單;執行緒安全沒有必要考慮其同步問題,不用擔心資料被其他執行緒修改;不需要保護性拷貝;
缺點:物件建立的開銷,每一步都需要建立物件。