C#設計模式(1)——單例模式(Singleton)


單例模式即所謂的一個類只能有一個實例, 也就是類只能在內部實例一次,然后提供這一實例,外部無法對此類實例化。

單例模式的特點:

1、只能有一個實例;

2、只能自己創建自己的唯一實例;

3、必須給所有其他的對象提供這一實例。

普通單例模式(沒有考慮線程安全)

  /// <summary>
    /// 單例模式
    /// </summary>
    public class Singleton
    { 
        private static Singleton singleton;

        private Singleton() { }

        /// <summary>
        /// 獲取實例-線程非安全模式
        /// </summary>
        /// <returns></returns>
        public static Singleton GetSingleton()
        {
            if (singleton == null)
                singleton = new Singleton();
            return singleton;
        } 
    }

考慮多線程安全

/// <summary>
    /// 單例模式
    /// </summary>
    public class Singleton
    {
        private static object obj = new object();

        private static Singleton singleton;

        private Singleton() { }

        /// <summary>
        /// 獲取實例-線程安全
        /// </summary>
        /// <returns></returns>
        public static Singleton GetThreadSafeSingleton()
        {
              lock (obj)
              {
                 if (singleton == null)
                 {
                    singleton = new Singleton();
                 }
             }
            return singleton;
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM