偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試官問:你知道 C# 單例模式有哪幾種常用的實現方式?

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

單例模式介紹

單例模式是一種創(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<T>類來實現線程安全的懶加載單例模式。

/// <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("懶加載單例模式.");
            }
        }


責任編輯:武曉燕 來源: 追逐時光者
相關推薦

2021-07-14 08:00:13

reactCss模塊

2021-11-02 22:04:58

模式

2024-05-10 07:44:23

C#進程程序

2022-05-23 07:35:15

單例模式懶漢模式靜態(tài)內部類

2024-02-26 14:07:18

2024-11-06 11:38:59

C#單例模式

2020-10-05 21:46:54

線程

2018-07-28 00:20:15

2024-05-27 09:07:27

2020-04-27 08:31:29

單例模式Python軟件設計模式

2018-04-03 15:38:07

Java單例模式模式設計

2023-01-12 08:24:45

ZookeeperZK服務器

2020-08-03 07:38:12

單例模式

2024-02-26 08:04:38

ReactReact.js場景

2024-11-01 10:48:01

C#WPF程序

2024-07-26 08:10:10

2024-04-24 11:24:43

C#數據去重

2010-08-23 15:06:52

發(fā)問

2021-05-27 07:14:52

ZooKeeper節(jié)點類型

2021-03-12 08:02:34

Redis數據類型.
點贊
收藏

51CTO技術棧公眾號