成人免费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-12-31 00:08:37

C#語言dynamic?

2024-09-10 10:34:48

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存儲

2023-10-26 07:15:46

2024-05-07 07:58:47

C#程序類型

2024-07-03 08:15:39

C#字符串表達式

2022-07-08 09:27:48

CSSIFC模型

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

單測編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂成人国产精品一区 | 亚洲性视频网站 | 亚洲毛片| m豆传媒在线链接观看 | 成人av大全| 欧美一二三 | 日本粉嫩一区二区三区视频 | 亚洲成人网在线观看 | 中文字幕一区二区在线观看 | 日本不卡高字幕在线2019 | 精品欧美久久 | 国产一级一片免费播放 | 国产专区免费 | 国产精品精品视频一区二区三区 | 国产一级视频在线 | 亚洲精品欧美一区二区三区 | 一区二区三区国产好 | 看片国产 | 影音先锋中文字幕在线观看 | 免费av在线网站 | 日韩最新网站 | 亚洲精品久 | 亚洲a视频 | 91视频一区 | www.99久久.com | 成人av观看 | 欧美日韩高清 | 国产精品永久在线观看 | 国产传媒毛片精品视频第一次 | 亚洲精品久久久久久一区二区 | 国产乱xxav | 日韩精品一区二区三区中文在线 | 欧洲高清转码区一二区 | 福利视频网址 | 91在线免费视频 | 国产精品18毛片一区二区 | 日韩精品亚洲专区在线观看 | 日韩一区二区在线免费观看 | 激情小说综合网 | 91精品久久久久久久久 | 日韩三级一区 |