1. 程式人生 > >讀書筆記-《Effective Java》第3條、第4條: 強化Singleton屬性—私有構造器或者列舉型別

讀書筆記-《Effective Java》第3條、第4條: 強化Singleton屬性—私有構造器或者列舉型別

  • 第3條:用私有構造器或者列舉型別強化Singleton屬性

把構造器私有這個是單例基本要求,本條介紹了一種不知道為啥沒有流行起來的單例方式(實現Singleton的最佳方式),包含單個元素的列舉型別(INSTANCE不是關鍵字,寫別的也行)

package org.test;

public enum People {
    INSTANCE;
    public String name = "單例name";
    public String age = "單例age";

    public void execute() {
        System.out.println("execute");

    }
}

這種方式的單例能防反射執行建構函式,從而保證了物件的單例。這種寫法的類不能設定公有構造器,私有構造器也永遠不會被執行。

  • 第4條:通過私有構造器強化不可例項化的能力

例如工具類,本身不需要被例項化,也不需要被繼承(也就是說不能用抽象類),所以要把建構函式私有化。

不過還是第3條的enum用的得勁。

? 測試的時候用反射建立物件測糊塗了, 反射日常也不用, 有機會研究反射的時候再回過頭測這個。