2012-11-03 70 views

回答

19

有效的Java項目1:考慮靜態工廠方法而不是構造函數。

一些靜態工廠方法的優點包括:

  • 他們自動推斷類型參數預Java 7中
  • 他們讓我們能夠控制的遺傳模式:我們可以在番石榴繼承集合類型,而不讓外部代碼子類化它們。
  • 它們讓我們返回所需類型的任意子類,讓我們更好地隱藏實現細節。
+5

圖書內容也是[在線提供](http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1)。 – david

+1

我會添加從最終用戶的角度來看最重要的優勢:他們有更清晰的名字。 'newHashMapWithCapacity(100)'比'new HashMap (100)'清楚得多。 –

+2

@JBNizet:我們確實爲JDK集合實現提供了這些方法,但對於我們自己生成的集合類型,實際上通常不會有比「create」更詳細的工廠名稱。 (當然,我不確定這是否是正確的呼叫,因爲你描述的原因。) –