設計模式-單例,設計模式-
單例模式是一種常見的設計模式
單例模式有以下特點:
1、單例類只能有一個執行個體。
2、單例類必須自己建立自己的唯一執行個體。
3、單例類必須給所有其他對象提供這一執行個體。
餓漢式單例
public class Singleton { private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; }}
在類建立的同時就已經建立好一個靜態對象供系統使用,以後不再改變
懶漢式單例
public class Singleton { private static Singleton instance = null; /** * 懶漢模式一 * 同步方法 */ public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } /** * 懶漢模式二 * 同步代碼塊 */ public static Singleton getInstance() { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } return instance; }}
同步代碼,或者同步代碼塊,效率低
雙重鎖檢查
public class Singleton { private static volatile Singleton instance = null; public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; }}
安全執行緒,提高效率
內部靜態類
public class Singleton { private static class SingletonHandler { private static Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHandler.instance; }}