成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

單例模式介紹

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

設計模式的作用

設計模式是對面向對象設計中反復出現的問題的解決方案。它們提供了被反復使用、多數人知曉的、經過分類編目的代碼設計經驗總結。

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

餓漢式單例模式

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

/// <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("餓漢式單例模式.");
            }
        }

懶漢式單例模式

懶漢式單例在第一次被訪問時才創建實例。為了線程安全,通常需要使用鎖機制。

/// <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

單例模式懶漢模式靜態內部類

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單例模式模式設計

2020-08-03 07:38:12

單例模式

2023-01-12 08:24:45

ZookeeperZK服務器

2024-02-26 08:04:38

ReactReact.js場景

2024-11-01 10:48:01

C#WPF程序

2024-07-26 08:10:10

2010-08-23 15:06:52

發問

2024-04-24 11:24:43

C#數據去重

2021-05-27 07:14:52

ZooKeeper節點類型

2021-03-12 08:02:34

Redis數據類型.
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本黄色高清视频 | 成人久久18免费网站麻豆 | 国产成人高清在线观看 | 国产91丝袜在线熟 | 亚洲国产伊人 | 综合久久综合久久 | 99久久精品免费看国产四区 | 欧美99久久精品乱码影视 | 日韩中文字幕在线 | 日韩精品中文字幕在线 | 亚洲视频在线免费 | 欧美性高潮 | 中文字幕 在线观看 | 欧美亚洲视频 | 伊人一区 | 亚洲一区二区视频在线播放 | 国产精品激情在线 | 亚洲精品久久久久久久不卡四虎 | 国产十日韩十欧美 | 99国产视频| 国产精品福利在线观看 | 国产午夜精品久久久 | 亚洲国产精品一区二区www | 亚洲福利在线观看 | 国产欧美日韩在线一区 | 久色视频在线观看 | 福利网址| 在线观看视频h | 欧美日高清 | 日韩精品一区二区三区 | 91动漫在线观看 | 久久精品中文 | 久久高清| 全部免费毛片在线播放网站 | 久久免费视频在线 | 国产精品久久久久久久7777 | 国产精品欧美精品日韩精品 | 国产成人精品综合 | 久一精品 | 成人二区| 在线午夜 |