1. 程式人生 > >Effective Java——第二條

Effective Java——第二條

—建立和銷燬物件—

第二條

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是不可變類,改類物件一旦建立,屬性就不可改變。

可變類:物件建立後,屬性可以任意修改。

不可變類優缺點:構造、測試、使用都很簡單;執行緒安全沒有必要考慮其同步問題,不用擔心資料被其他執行緒修改;不需要保護性拷貝;

缺點:物件建立的開銷,每一步都需要建立物件。