创建型设计模式(单例模式)
生活随笔
收集整理的這篇文章主要介紹了
创建型设计模式(单例模式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
單例模式有以下特點:
1、單例類只能有一個實例。
2、單例類必須自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。
一、懶漢式單例
//懶漢式單例類.在第一次調用的時候實例化自己 public class Singleton { private Singleton() {} private static Singleton single=null; //靜態工廠方法 public static Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }以上懶漢式單例的實現沒有考慮線程安全問題,它是線程不安全的,并發環境下很可能出現多個Singleton實例,要實現線程安全,有以下三種方式,都是對getInstance這個方法改造,保證了懶漢式單例的線程安全。
1、在getInstance方法上加同步
public static synchronized Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; }2、雙重檢查鎖定
public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; }3、靜態內部類
public class Singleton { private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return LazyHolder.INSTANCE; } }二、餓漢式單例
//餓漢式單例類.在類初始化時,已經自行實例化 public class Singleton1 { private Singleton1() {} private static final Singleton1 single = new Singleton1(); //靜態工廠方法 public static Singleton1 getInstance() { return single; } }餓漢式在類創建的同時就已經創建好一個靜態的對象供系統使用,以后不再改變,所以天生是線程安全的。
轉載于:https://www.cnblogs.com/echo-ling/p/7510952.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的创建型设计模式(单例模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: JS 关闭window.open的窗体,
- 下一篇: RequestResponse(lara