最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?單例模式的多種實現方式

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

單例模式介紹

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

設計模式的作用

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

餓漢式單例模式

餓漢式單例是在類加載時就創(chuàng)建實例。優(yōu)點是實現簡單,缺點是如果該實例不被使用會造成資源浪費。

        /// <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類來實現線程安全的懶加載單例模式。

        /// <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# 單例模式的多種實現的文章就介紹到這了,更多相關C# 單例模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#中System.IO.Pipelines庫的使用詳解

    C#中System.IO.Pipelines庫的使用詳解

    System.IO.Pipelines 是一個庫,旨在使在 .NET 中執(zhí)行高性能 I/O 更加容易,本文主要為大家詳細介紹了System.IO.Pipelines具體使用方法,感興趣的可以了解下
    2023-12-12
  • C#語法相比其它語言比較獨特的地方(二)

    C#語法相比其它語言比較獨特的地方(二)

    這篇文章主要介紹了C#語法相比其它語言比較獨特的地方(二),本文講解了internal與protected、private、enum、string的==、傳引用等內容,需要的朋友可以參考下
    2015-04-04
  • C#結束Excel進程的步驟教學

    C#結束Excel進程的步驟教學

    在本篇文章里小編給大家分享了關于C#結束Excel進程的步驟教學內容,有興趣的朋友們學習下。
    2019-01-01
  • OpenCvSharp實現Mat對象簡單的像素操作

    OpenCvSharp實現Mat對象簡單的像素操作

    這篇文章主要介紹了OpenCvSharp實現Mat對象簡單的像素操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • C#實現斐波那契數列的幾種方法整理

    C#實現斐波那契數列的幾種方法整理

    這篇文章主要介紹了C#實現斐波那契數列的幾種方法整理,主要介紹了遞歸,循環(huán),公式和矩陣法等,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • C#使用自定義的泛型節(jié)點類實現二叉樹類

    C#使用自定義的泛型節(jié)點類實現二叉樹類

    這篇文章主要為大家詳細介紹了C#如何使用自定義的泛型節(jié)點類 Node<T>實現二叉樹類BinaryTree<T>及其方法,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • C#文件路徑Path類介紹

    C#文件路徑Path類介紹

    這篇文章介紹了C#中的文件路徑Path類,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#中整理了幾種字符串截取方法小結

    C#中整理了幾種字符串截取方法小結

    本文給大家整理了幾種字符串截取方法,?(Substring);(Remove);(Replace)方法和split方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Winform 實現進度條彈窗和任務控制

    Winform 實現進度條彈窗和任務控制

    這篇文章主要介紹了Winform 實現進度條彈窗和任務控制的方法,幫助大家更好的利用c# winform進行開發(fā),感興趣的朋友可以了解下
    2020-12-12
  • C#逐行讀取txt文件的方法

    C#逐行讀取txt文件的方法

    這篇文章主要介紹了C#逐行讀取txt文件的方法,是C#程序設計中非常實用的一個技巧,需要的朋友可以參考下
    2014-09-09

最新評論

西安市| 宜兰县| 通州区| 秀山| 镇赉县| 临西县| 白玉县| 宝丰县| 务川| 邓州市| 江门市| 屏东市| 东莞市| 宁夏| 永登县| 洛宁县| 南江县| 民和| 云南省| 康保县| 商水县| 北辰区| 安达市| 桐庐县| 岳阳县| 西青区| 宁武县| 利辛县| 隆德县| 南宫市| 黄浦区| 磐石市| 泗洪县| 大余县| 濉溪县| 广汉市| 四川省| 巴中市| 太康县| 瑞昌市| 甘南县|