使用單例模式獲取物件時有且只有乙個物件
單例模式有五種方式
常用:餓漢式、懶漢式
其他:雙重檢測鎖式、內部類式、列舉式
**詳解:
package com.project.singleton;
/** * 餓漢式單例
* 有點:效率高,執行緒安全
* 缺點:不能懶載入
* */
public class hungrysingleton ;
//外部訪問介面
public static hungrysingleton getinstance()
}
package com.project.singleton;
/** * 餓漢式單例
* 有點:效率高,執行緒安全
* 缺點:不能懶載入
* */
public class hungrysingleton ;
//外部訪問介面
public static hungrysingleton getinstance()
}
package com.project.singleton;
/** * 雙重檢查鎖單例
* * 注:由於編譯器優化原因和jvm底層內部模型的原因,偶爾會出問題
* */
public class doublecheckinglocksingleton
public static doublecheckinglocksingleton getinstance()
}instance = doublecheckinglock;}}
} return instance;
}}
package com.project.singleton;
/** * 內部類單例
* 優點:兼備高併發呼叫和延遲載入優勢
* 注:外部類沒有static靜態屬性,則不會像餓漢式那樣立即載入物件
*/public class insidesingleton
//構造方法私有化
private insidesingleton() {}
//獲取物件
public static insidesingleton getinstance()
}
package com.project.singleton;
/** * 列舉單例
* 優點:實現簡單,列舉本身就是單例模式
* 由jvm從根本上提供保障,並且避免了反射和反序列化的漏洞
* 缺點:無延遲載入
*/public enum enumsingleton
}
原始碼及測試如下:
github:
GOF23 設計模式
design patterns elements of reusable object oriented software 即後述 設計模式 一書 由 erich gamma richard helm ralph johnson 和 john vlissides 合著 addison wesley,...
GoF23種設計模式
設計模式的經典名著 design patterns elements of reusable object oriented software,中譯本名為 設計模式 可復用物件導向軟體的基礎 的四位作者erich gamma richard helm ralph johnson,以及john vli...
GoF 23種設計模式
建立型模式 factory模式 abstractfactory模式 singleton模式 builder模式 prototype模式 結構型模式 bridge模式 adapter模式 decorator模式 composite模式 flyweight模式 facade模式 proxy模式 行為模式...