第3條:用私有構造器或者列舉類型別強化Singleton屬性
阿新 • • 發佈:2018-12-09
一、公有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() { ... }
}