C# 單例模式的多種實現(xiàn),你學會了嗎?
作者:大姚 
  單例模式是一種創(chuàng)建型設(shè)計模式,它主要確保在一個類只有一個實例,并提供一個全局訪問點來獲取該實例。在C#中,有多種方式實現(xiàn)單例模式,每種方式都有其特定的使用場景和注意事項。
 單例模式介紹
單例模式是一種創(chuàng)建型設(shè)計模式,它主要確保在一個類只有一個實例,并提供一個全局訪問點來獲取該實例。在C#中,有多種方式實現(xiàn)單例模式,每種方式都有其特定的使用場景和注意事項。
設(shè)計模式的作用
- 提高代碼的可重用性:通過定義一套標準的解決方案,設(shè)計模式使得相同或類似的問題可以在不同的項目中復(fù)用相同的代碼結(jié)構(gòu)或邏輯。
 - 增強代碼的可讀性:設(shè)計模式使用清晰、簡潔的方式表達復(fù)雜的代碼邏輯,使得其他開發(fā)者能夠更容易地理解和維護代碼。
 - 提高系統(tǒng)的可維護性:設(shè)計模式遵循一定的設(shè)計原則,如開閉原則、里氏代換原則等,這些原則有助于降低系統(tǒng)各部分的耦合度,提高系統(tǒng)的可擴展性和可維護性。
 
餓漢式單例模式
餓漢式單例是在類加載時就創(chuàng)建實例。優(yōu)點是實現(xiàn)簡單,缺點是如果該實例不被使用會造成資源浪費。
/// <summary>
        /// 餓漢式單例模式
        /// </summary>
        public class SingletonEager
        {
            private SingletonEager() { }
            private static readonly SingletonEager _instance = new SingletonEager();
            public static SingletonEager Instance
            {
                get { return _instance; }
            }
            public void DoSomething()
            {
                Console.WriteLine("餓漢式單例模式.");
            }
        }懶漢式單例模式
懶漢式單例在第一次被訪問時才創(chuàng)建實例。為了線程安全,通常需要使用鎖機制。
/// <summary>
        /// 懶漢式單例模式
        /// </summary>
        public class SingletonLazy
        {
            private SingletonLazy() { }
            private static SingletonLazy? _instance;
            private static readonly object _lockObj = new object();
            public static SingletonLazy Instance
            {
                get
                {
                    if (_instance == null)
                    {
                        lock (_lockObj)
                        {
                            if (_instance == null)
                            {
                                _instance = new SingletonLazy();
                            }
                        }
                    }
                    return _instance;
                }
            }
            public void DoSomething()
            {
                Console.WriteLine("懶漢式單例模式.");
            }
        }懶加載單例模式
如果您使用的是 .NET 4(或更高版本),可以使用Lazy類來實現(xiàn)線程安全的懶加載單例模式。
/// <summary>
        /// 懶加載單例模式
        /// </summary>
        public sealed class SingletonByLazy
        {
            private static readonly Lazy<SingletonByLazy> _lazy = new Lazy<SingletonByLazy>(() => new SingletonByLazy());
            public static SingletonByLazy Instance { get { return _lazy.Value; } }
            private SingletonByLazy() { }
            public void DoSomething()
            {
                Console.WriteLine("懶加載單例模式.");
            }
        }責任編輯:武曉燕 
                    來源:
                    追逐時光者
 














 
 
 


















 
 
 
 