欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?單例模式的多種實現(xiàn)方式

 更新時間:2024年11月07日 08:53:35   作者:追逐時光者  
單例模式是一種確保類只有一個實例的設計模式,主要用于提供全局訪問點,C#中實現(xiàn)單例的方法多樣,包括餓漢式和懶漢式,各有優(yōu)缺點,此外,單例模式不僅提高代碼可重用性和可讀性,還增強了系統(tǒng)的可維護性

單例模式介紹

單例模式是一種創(chuàng)建型設計模式,它主要確保在一個類只有一個實例,并提供一個全局訪問點來獲取該實例。在C#中,有多種方式實現(xiàn)單例模式,每種方式都有其特定的使用場景和注意事項。

設計模式的作用

  • 提高代碼的可重用性:通過定義一套標準的解決方案,設計模式使得相同或類似的問題可以在不同的項目中復用相同的代碼結構或邏輯。
  • 增強代碼的可讀性:設計模式使用清晰、簡潔的方式表達復雜的代碼邏輯,使得其他開發(fā)者能夠更容易地理解和維護代碼。
  • 提高系統(tǒng)的可維護性:設計模式遵循一定的設計原則,如開閉原則、里氏代換原則等,這些原則有助于降低系統(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("懶加載單例模式.");
            }
        }

到此這篇關于C# 單例模式的多種實現(xiàn)的文章就介紹到這了,更多相關C# 單例模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#實現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說明

    C#實現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說明

    這篇文章主要介紹了C#實現(xiàn)圖片上傳(PC端和APP)保存及 跨域上傳說明的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 如何使用C#將Tensorflow訓練的.pb文件用在生產(chǎn)環(huán)境詳解

    如何使用C#將Tensorflow訓練的.pb文件用在生產(chǎn)環(huán)境詳解

    這篇文章主要給大家介紹了關于如何使用C#將Tensorflow訓練的.pb文件用在生產(chǎn)環(huán)境的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-11-11
  • 一文詳解C#中方法重載的底層玩法

    一文詳解C#中方法重載的底層玩法

    最近在看C++的方法重載,就在想C#中的重載底層是怎么玩的。畢竟很多朋友應該知道C是不支持重載的。本文將來詳細講講C#中方法重載的底層玩法,感興趣的可以了解一下<BR>
    2022-06-06
  • C# DataTable.Select()根據(jù)條件篩選數(shù)據(jù)問題

    C# DataTable.Select()根據(jù)條件篩選數(shù)據(jù)問題

    這篇文章主要介紹了C# DataTable.Select()根據(jù)條件篩選數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Winform?控件優(yōu)化LayeredWindow無鋸齒圓角窗體

    Winform?控件優(yōu)化LayeredWindow無鋸齒圓角窗體

    這篇文章主要為大家介紹了Winform?控件優(yōu)化LayeredWindow實現(xiàn)無鋸齒圓角窗體示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • C#的編碼規(guī)范詳細說明

    C#的編碼規(guī)范詳細說明

    編碼規(guī)范是老生常談的問題,現(xiàn)在再看代碼規(guī)范可能不會再去在意變量,控件的命名方法等,而是更加關注代碼的實用性
    2013-08-08
  • C#圖片添加水印的實現(xiàn)代碼

    C#圖片添加水印的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C#給圖片添加水印的實現(xiàn)代碼,不僅可以為圖片加文字水印,還可以判斷是否是圖片文件,感興趣的小伙伴們可以參考一下
    2016-02-02
  • WPF下如何自定義MessageBox消息提示

    WPF下如何自定義MessageBox消息提示

    這篇文章主要介紹了WPF下如何自定義MessageBox消息提示問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Unity的AssetPostprocessor?Model動畫函數(shù)使用案例深究

    Unity的AssetPostprocessor?Model動畫函數(shù)使用案例深究

    這篇文章主要介紹了Unity的AssetPostprocessor?Model動畫函數(shù)使用案例的深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Unity2D實現(xiàn)游戲回旋鏢

    Unity2D實現(xiàn)游戲回旋鏢

    這篇文章主要為大家詳細介紹了Unity2D實現(xiàn)游戲回旋鏢,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論