Effective Java

參考 effective java 一書


  • 創建和銷燬對象

1) 用靜態工廠方法代替構造器
優勢:

  • 靜態工廠方法有名稱
    這是因爲構造器都是同名的,不同參數列表的構造器方法不能很直觀的區分出來
  • 不必在每次調用他們的時候都創建一個新對象
    參考單例模式和享元模式
  • 可以返回原返回類型的任何子類型的對象
    構造器指定的是某個具體的類,靜態方法可以是具有繼承關係的父子類
  • 創建參數化實例時,使代碼更加簡潔
    缺點:
  • 類如果不含有公有的或者受保護的構造器,就不能被子類化
  • 他們與其它的靜態方法實際上沒有任何區別

  • 2)用私有構造器或者枚舉類型強化Singleton屬性
    單例模式
    3)私有化構造器強化不可實例的能力
    4)避免創建不必要的對象
    5)消除過期的對象引用
    方法體中,對對象的使用已經完畢,但是堆中對象的實例內存卻沒有被釋放,這是因爲 仍然會維護着對該對象的過期引用,可能會造成內存泄漏,內存泄漏的幾個來源:
    - 類自己管理內存
    - 緩存
    - 監聽器和其它回調
    解決方案:在對象使用完畢後,對該對象賦值爲null
    6)避免使用終結finalizer方法

    對於所有對象都通用的方法

    7)覆蓋equals時請遵守通用約定
    equals方法的通用約定:自反性,對稱性,傳遞性和一致性
    8)覆蓋equals方法總要覆蓋hashcode
    equals相等, hashcode一定等
    equals不等,hashcode不一定等
    9)始終要覆蓋toString

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章