天天看點

多參構造使用建構器--effectiveJava讀書筆記

對付多參的建構,特别是一些必選,一些可選的時候我們一般有如下的解決辦法。

比如抽象一個裝機的類,  cpu,記憶體,主機闆,硬碟是必選的,但是顯示卡,聲霸卡,固态硬碟是可選的。

為了對付各種各樣的裝機需求。我們一般有如下辦法:

1. 重載構造器

這樣可能會需要多個構造器,可讀性不好。

2. 用javabean模式的set方法。

這種可讀性要好很多,但是其能夠在運作期間随意的修改,不能夠保持狀态,不能夠通過對構造參數的校驗來避免問題,并且還會給線程同步帶來麻煩。

3. 就是使用建構器了,看如下的代碼:

這樣computer可以用如下的代碼構造:

這樣帶來的好處為

1. 既能想構造器那樣安全,又能有比較好的可讀性,如soliddisk一看就知道是給固态硬碟來指派的。

2. 讓可選參數傳回builder本身,還模拟了具名參數,更加可讀

3. 可以加入更多的校驗

4. 更容易擴充,如果增加了新的參數,隻需要新增一個方法,而不是新增n個構造器

繼續閱讀