日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

设计模式——单例模式(Singleton)

發(fā)布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式——单例模式(Singleton) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。——DP

UML類圖

模式說明

個人認為單例模式是所有設(shè)計模式中最為簡單的一個模式,因為實現(xiàn)這個模式僅需一個類,而不像其他模式需要若干個類。這個模式中,需要注意的一點就是獲取實例時的線程安全問題。

通常單例模式的實現(xiàn)方式如下:

   class ToolBox{// 阻止外部實例化ToolBoxprivate ToolBox(){guid = Guid.NewGuid();}private static ToolBox instance;private static object lockObj = new object();//提供一個全局訪問點public static ToolBox GetToolBoxInstance(){if (instance != null) return instance;//要考慮線程安全問題lock (lockObj){if (instance == null){instance = new ToolBox();}}return instance;}#region 用于測試private Guid guid;public void ShowGuid(){Console.WriteLine(guid.ToString());}#endregion}

另外,C#語言中提供一種“靜態(tài)初始化”功能,對靜態(tài)初始化器的調(diào)用是由CLR控制的,并且CLR會解決線程安全問題,保證只調(diào)用一次。所以也可以利用這個特性,來簡化單例模式的C#實現(xiàn):

    class ToolBox2{// 阻止外部實例化ToolBox2private ToolBox2() { guid = Guid.NewGuid(); }//靜態(tài)內(nèi)聯(lián)初始化private static readonly ToolBox2 instance = new ToolBox2();//提供一個全局訪問點public static ToolBox2 GetToolBoxInstance(){return instance;}#region 用于測試private Guid guid;public void ShowGuid(){Console.WriteLine(guid.ToString());}#endregion}

客戶端訪問代碼如下(從輸出可以看到,每次訪問獲取的都是同一個實例):

        static void Main(string[] args){// 測試單例模式for (int i = 0; i < 10; i++){new Thread(x =>ToolBox.GetToolBoxInstance().ShowGuid()).Start();}Thread.Sleep(200);Console.WriteLine();// 測試單例模式for (int i = 0; i < 10; i++){new Thread(x =>ToolBox2.GetToolBoxInstance().ShowGuid()).Start();}/* 輸出如下f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd5f38db210-20bc-4c2d-8d43-40a0e58fedd58398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c8398be29-abd3-4abd-abf8-4fd09641427c*/Console.ReadKey();}

總結(jié)

單例模式和前面介紹的工廠模式(工廠方法、抽象工廠)都屬于創(chuàng)建型模式,負責(zé)類的實例化過程。單例模式的實現(xiàn)過程,只需要一個類,算是最簡單的一個模式,在多線程環(huán)境下,單例模式的實現(xiàn)必須保證線程安全,否則在多個線程同時訪問時,可能產(chǎn)生多個實例。在C#中,可以通過語言本身的特性(靜態(tài)初始化器)來更簡潔地實現(xiàn)單例模式。

參考

  1. 程杰老師? 《大話設(shè)計模式》

轉(zhuǎn)載于:https://www.cnblogs.com/hecool/p/3313409.html

總結(jié)

以上是生活随笔為你收集整理的设计模式——单例模式(Singleton)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线h网| 91亚洲欧美| 日日摸夜夜添夜夜添高潮喷水 | 日本人和亚洲人zjzjhd | 久久久精品91 | 新红楼梦2005锦江版高清在线观看 | 奇米网一区二区 | www欧美精品| 日韩激情一区二区 | 一边摸内裤一边吻胸 | 欧美日韩不卡合集视频 | 久91| 夜夜爽影院 | 欧美片17c07.com | 精产国品一区二区 | 国产精品成人69xxx免费视频 | 久久久久久人妻一区二区三区 | 男女av网站 | 久久精品爱 | 国产精品免费看片 | 色综合自拍 | 欧美丝袜一区二区 | 午夜毛片在线 | 少妇xxxx | 日韩精品一区二区三区无码专区 | 1000亚洲裸体人体 | 在线观看波多野结衣 | 女人一级一片30分 | 经典一区二区三区 | 亚洲国产精品激情在线观看 | 懂色av一区二区在线播放 | 男男毛片 | 亚洲成年人网站在线观看 | 中国老熟女重囗味hdxx | 日韩不卡中文字幕 | 落日余晖 | 日韩美女视频19 | 欧美成人国产 | aⅴ在线免费观看 | 91av片| 免看一级a毛片一片成人不卡 | 久久无吗视频 | 黄色av网页 | 一区二区三区xxx | 爱情岛成人 | av有声小说一区二区三区 | 国产麻豆精品在线观看 | 亚洲剧情在线 | 国产精品视频一区二区三区不卡 | 蜜芽一区二区 | 亚洲男人的天堂在线 | 在线麻豆 | 国产aⅴ精品一区二区三区久久 | 欧美三级午夜理伦三级中视频 | 欧美日韩五月天 | 亚洲精品www久久久久久广东 | 美女在线免费视频 | 伊人性视频 | 国产黄色av网站 | 欧美日韩中字 | 中文字幕在线不卡视频 | 国产成人8x视频一区二区 | 999国产精品视频 | 国产一区二区三区色淫影院 | 成人蜜桃视频 | 天天干,天天干 | 国产精品18久久久久久vr下载 | 国产在线视频福利 | 极品白嫩丰满少妇无套 | 新天堂网 | 在线不卡中文字幕 | 国产视频亚洲 | 国产精品videossex久久发布 | 女人18毛片水真多 | 老师上课夹震蛋高潮了 | 国产无遮掩 | 好看的黄色录像 | 波多野结衣在线一区 | a黄色大片 | 五月婷婷综合色 | 香蕉久久av一区二区三区 | 日韩人妻一区二区三区 | 亚洲va欧美va天堂v国产综合 | 韩国av三级 | 男女做那个视频 | 亚洲最新av网址 | 男人操女人免费 | 国产精品久久91 | 午夜免费视频网站 | 一级性生活大片 | 自拍偷拍另类 | 日本一级做a爱片 | 日韩免费精品视频 | 蜜桃视频日韩 | 国内少妇精品 | 人妻无码一区二区三区免费 | 男人撒尿视频xvideos | 日韩欧美中文字幕在线播放 | 中文字幕无码人妻少妇免费 |