Effective Java重點筆記--第一條 考慮使用靜態(tài)工廠方法代替構(gòu)造器

  • 靜態(tài)工廠方法定義:
    返回類實例的靜態(tài)方法,與設(shè)計模式中的工廠方法模式不同。
  • 優(yōu)點:
    1. 靜態(tài)工廠方法有名稱。我們可以通過不同的名稱來區(qū)分參數(shù)列表不同的構(gòu)造器,這樣顯然更加的清楚,便于用戶理解。
    2. 不必在每次調(diào)用時創(chuàng)建一個新的對象。重復(fù)利用對象,避免重復(fù)創(chuàng)建相同的對象,提升性能。
    3. 可以返回類型的任何子類型的對象。我們在選擇返回對象的類型時,有了更大的靈活性。適用于基于接口的的框架。
    4. 使代碼變得更加簡介。如:
      <code>Map<String,List<String>> m=new HashMap<String,List<String>>();
      //可更換為
      Map<String,List<String>> m=HashMap.newInstance();</code>
  • 缺點:
    1.** 一個類如果不含有public或者protect的構(gòu)造器,就不能被子類繼承。**
    2.靜態(tài)工廠方法與普通靜態(tài)方法沒有任何區(qū)別,在API文檔中不會被明確標(biāo)識出來。所以在查詢使用靜態(tài)工廠方法創(chuàng)建實例對象時,會十分困難。
  • 靜態(tài)工廠方法的管用名稱:
  1. ValueOf——類型轉(zhuǎn)換方法,返回與參數(shù)具有相同值的實例。
  2. of——同上
  3. getInstance——返回通過參數(shù)描述的實例,對Singleton來說,永遠(yuǎn)返回唯一的實例。
  4. newInstance——確保返回的每個實例都與其他實例不同
  5. getType——像getInstance一樣,但是在工廠方法處于不同的類中的時候使用。
  6. newType——像newInstance一樣,但是在工廠方法處于不同的類中的時候使用。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容