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

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


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

2024-10-16 11:28:42

2024-09-10 10:34:48

2024-12-31 00:08:37

C#語言dynamic?

2024-03-06 08:28:16

設計模式Java

2024-12-23 10:06:45

C#深拷貝技術

2024-10-21 07:05:14

C#特性語言

2022-06-16 07:50:35

數據結構鏈表

2024-05-17 08:42:52

AttributeMyClass方法

2024-12-12 08:50:30

開源多媒體框架

2024-11-15 15:00:00

單例模式C#編程

2025-01-09 07:58:42

C#API函數

2024-07-29 10:35:44

KubernetesCSI存儲

2024-05-07 07:58:47

C#程序類型

2024-07-03 08:15:39

C#字符串表達式

2023-10-26 07:15:46

2023-12-07 12:29:49

Nginx負載均衡策略

2024-03-12 08:37:32

asyncawaitJavaScript

2010-02-03 09:43:16

C++單例模式

2023-05-05 08:23:29

單測編程語言

2022-07-08 09:27:48

CSSIFC模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区二区三区四区五区 | 在线区 | 一级片在线免费播放 | 男女免费在线观看视频 | 久久久久国产一区二区三区不卡 | 91免费在线 | 超碰520 | 精品欧美一区二区三区久久久 | 国产成人精品一区二区三区视频 | 欧美午夜一区二区三区免费大片 | 日韩欧美视频在线 | 久久精品亚洲一区二区三区浴池 | 亚洲第一区国产精品 | 久久久成人精品 | 成人久久18免费网站麻豆 | 国产精品欧美一区喷水 | 国产精品久久久久久妇女6080 | 精品一区二区三区视频在线观看 | 久久综合国产 | 久久精品亚洲精品国产欧美 | 日本不卡视频在线播放 | 日韩中文字幕 | 欧美成人h版在线观看 | 免费视频一区二区 | 久久久久久久国产精品视频 | 97caoporn国产免费人人 | 福利视频二区 | 久热精品免费 | 日本超碰 | 亚洲免费观看视频 | 一级视频在线免费观看 | 成人小视频在线观看 | 免费看a| 亚洲视频一区在线观看 | 精品国产青草久久久久96 | 99免费在线视频 | 亚洲高清三级 | 9久久婷婷国产综合精品性色 | 国产欧美精品区一区二区三区 | 日韩在线不卡 | 欧美在线观看一区 |