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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

11单件模式(Singleton Pattern)

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11单件模式(Singleton Pattern) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建型模式---單件模式(Singleton Pattern)
動機(Motivation):
??? 在軟件系統中,經常有這樣一些特殊的類,必須保證它們在系統中只存在一個實例,才能確保它們的邏輯正確性、以及良好的效率。
??? 如何繞過常規的構造器,提供一種機制來保證一個類只創建一個實例?
??? 這應該是類設計者的責任,而不是類使用者的責任。
結構圖:
????????
意圖:
??? 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
??? ?? ?? ?? ?? ?? ?? ?? ? ? ?? ------<<設計模式>>GOF
生活的例子:
??????????
適用性:
?? (1)當類只能有一個實例而且客戶可以從一個眾所周知的訪問點訪問它時。
?? (2)當這個唯一實例應該是通過子類化可擴展的,并且客戶應該無需更改代碼就能使用一個擴展的實例時。

代碼實現:
(1)單線程Singleton實現
??

????class?SingleThread_Singleton
????{
????????private?static?SingleThread_Singleton?instance?=?null;
????????private??SingleThread_Singleton(){}
????????public?static?SingleThread_Singleton?Instance
????????{
????????????get
????????????{
????????????????if?(instance?==?null)
????????????????{
????????????????????instance?=?new?SingleThread_Singleton();
????????????????}
????????????????return?instance;
????????????}
????????}
????}


以上代碼在單線程情況下不會出現任何問題。但是在多線程的情況下卻不是安全的。
如兩個線程同時運行到?if?(instance?==?null)判斷是否被實例化,一個線程判斷為True后,在進行創建
?instance?=?new?SingleThread_Singleton();之前,另一個線程也判斷(instance?==?null),結果也為True.
這樣就就違背了Singleton模式的原則(保證一個類僅有一個實例)。
怎樣在多線程情況下實現Singleton?
(2)多線程Singleton實現:

?1????class?MultiThread_Singleton
?2?????{
?3???????private??static?volatile?MultiThread_Singleton?instance?=?null;
?4???????private?static?object?lockHelper?=?new?object();
?5???????private?MultiThread_Singleton()?{?}
?6???????public?static?MultiThread_Singleton?Instance
?7???????{
?8???????????get
?9???????????{
10???????????????if?(instance?==?null)
11???????????????{
12???????????????????lock?(lockHelper)
13???????????????????{
14???????????????????????if?(instance?==?null)
15???????????????????????{
16???????????????????????????instance?=?new?MultiThread_Singleton();
17???????????????????????}
18???????????????????}
19???????????????}
20???????????????return?instance;
21???????????}?????????
22???????}
23?????

此程序對多線程是安全的,使用了一個輔助對象lockHelper,保證只有一個線程創建實例(如果instance為空,保證只有一個線程instance?=?new?MultiThread_Singleton();創建唯一的一個實例)。(Double Check)
請注意一個關鍵字volatile,如果去掉這個關鍵字,還是有可能發生線程不是安全的。
volatile?保證嚴格意義的多線程編譯器在代碼編譯時對指令不進行微調。
(3)靜態Singleton實現


3?????????class?Static_Singleton
4?????????{
5???????????? public?static?readonly?Static_Singleton?instance?=?new?Static_Singleton();
6?????????????private?Static_Singleton()?{?}
7?????????}


以上代碼展開等同于

1?????class?Static_Singleton
2?????????{
3???????????? public?static?readonly?Static_Singleton?instance;
4?????????????static?Static_Singleton()
5?????????????{
6?????????????????instance?=?new?Static_Singleton();
7?????????????}
8?????????????private?Static_Singleton()?{?}
9?????????}

由此可以看出,完全符合Singleton的原則。
優點: 簡潔,易懂
缺點: 不可以實現帶參數實例的創建。
(注:以上代碼及信息借鑒于李建忠老師的MSDN和TerryLee的文章。)

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本xxxxwww | 天天搞天天搞 | 亚洲一区二区三区久久久成人动漫 | 中国一区二区三区 | 国产又大又硬又粗 | 中文字幕第一页久久 | 中文字幕一区二区三区四区欧美 | 日韩影视一区 | 四虎影视永久 | av手机在线免费观看 | 国产成人在线观看免费网站 | 国产精品久久久爽爽爽麻豆色哟哟 | 怡红院av在线 | 性感美女一区二区三区 | 奇米在线视频 | 国产美女白浆 | 99久久久精品免费观看国产 | 狠狠一区 | 欧美一区二区三区视频 | 少妇野外性xx老女人野外性xx | 国产成a人亚洲精v品在线观看 | 福利视频在线 | 91精品国产乱码久久久久久久久 | 93久久精品日日躁夜夜躁欧美 | 天堂俺去俺来也www久久婷婷 | www.毛片com | 欧美日韩一区二区在线观看 | 欧美午夜一区二区 | 日本阿v视频在线观看 | 99久久久国产精品无码性 | 国产乱码精品一区二三赶尸艳谈 | 麻豆乱淫一区二区三区 | 秋霞在线观看视频 | 真人毛片视频 | 欧美67194 | 6080午夜伦理 | 麻豆影视在线免费观看 | 亚洲黄v| 国产91精品久久久久久久 | 午夜三区| 中文字幕在线观看国产 | 天堂资源在线观看 | 新婚之夜玷污岳丰满少妇在线观看 | 9色视频在线观看 | 国产成人在线免费视频 | 邵氏电影《金莲外传2》免费观看 | 瑟瑟综合网 | 亚洲最大的成人网 | 亚洲热在线| 天堂资源av| 欧美一级电影在线 | 熟女高潮一区二区三区视频 | 久久精品欧美一区 | 日韩国产三级 | 91你懂的| 中文字幕日韩一区 | 亚洲精品福利在线观看 | 国产精品丝袜在线 | 中文字幕av在线免费观看 | 亚洲网站在线观看 | 精品久久久久久无码人妻 | 天堂网成人 | 视频在线观看免费大片 | 久久精品久久久久久久 | 婷婷免费视频 | 91视频日本 | 亚日韩| 成人欧美在线视频 | 精品久久毛片 | 日本一区视频在线观看 | 午夜精品在线免费观看 | 男人天堂怡红院 | 少妇按摩一区二区三区 | 我的好妈妈在线观看 | 日韩高清一级片 | 一级片久久| 日韩少妇内射免费播放 | 舐丝袜脚视频丨vk | 亚洲第一免费视频 | 国产免费一区二区三区 | asian日本肉体pics | 三级黄色片网站 | 五月精品 | 国产精品1234 | 国产第五页 | 在线播放日韩av | 亚洲欧美另类中文字幕 | 人人爽人人爽人人 | 成人网在线观看 | 91抖音成人| 日韩一级免费视频 | 绿帽av| 国产一级在线播放 | 日本大奶子视频 | 国产精品黑人一区二区三区 | 欧美日韩精品在线观看视频 | 成人网在线视频 | 天堂中文字幕在线观看 | av导航网|