1. 程式人生 > >第3條:用私有構造器或者列舉類型別強化Singleton屬性

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

一、公有final域靜態成員

//Singleton with public final field
public class Elvis {
    public static final Elvis INSTANCE = new Elvis();
    private Elvis() {.....}

    public void leaveTheBuilding() {.....}
}

二、共用域方法

//Singleton with static factory
public class Elvis {
    private static final Elvis INSTANCE = new Elvis();
    private Elvis() { ... }
    public static Elvis getInstance() { return INSTANCE; }
    
    public void leaveTheBuilding() { ... }
}

三、單個元素的列舉型別

//Enum singleton - the preferred approach
public enum Elvis {
    INSTANCE;

    public void leaveTheBuilding() { ... }
}