9
請問,你能解釋爲什麼番石榴的創建者更喜歡將構造函數定義爲私有的,並且要定義靜態方法create()
來創建對象?番石榴:爲什麼方法create()而不是構造函數?
請問,你能解釋爲什麼番石榴的創建者更喜歡將構造函數定義爲私有的,並且要定義靜態方法create()
來創建對象?番石榴:爲什麼方法create()而不是構造函數?
有效的Java項目1:考慮靜態工廠方法而不是構造函數。
一些靜態工廠方法的優點包括:
圖書內容也是[在線提供](http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1)。 – david
我會添加從最終用戶的角度來看最重要的優勢:他們有更清晰的名字。 'newHashMapWithCapacity(100)'比'new HashMap(100)'清楚得多。 –
@JBNizet:我們確實爲JDK集合實現提供了這些方法,但對於我們自己生成的集合類型,實際上通常不會有比「create」更詳細的工廠名稱。 (當然,我不確定這是否是正確的呼叫,因爲你描述的原因。) –