韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

singleton設(shè)計(jì)模式的C#完成(上)

singleton設(shè)計(jì)模式的C#完成(上)

更新時(shí)間:2022-06-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

Singleton設(shè)計(jì)模式的C#實(shí)現(xiàn)

電子科技大學(xué) 張申 (handi@sina.com)

關(guān)鍵字:singleton 設(shè)計(jì)模式 同步 C#



1 Singleton模式。

Singleton(譯為單件或單態(tài))模式是設(shè)計(jì)模式中比較簡單而常用的模式。

有些時(shí)候在整個(gè)應(yīng)用程序中,會(huì)要求某個(gè)類有且只有一個(gè)實(shí)例,這個(gè)時(shí)候可以采用Singleton模式進(jìn)行設(shè)計(jì)。用Singleton模式設(shè)計(jì)的類不僅能保證在應(yīng)用中只有一個(gè)實(shí)例,而且提供了一種非全局變量的方法進(jìn)行全局訪問,稱為全局訪問點(diǎn),這樣對(duì)于沒有全局變量概念的純面向?qū)ο笳Z言來說是非常方便的,比如C#。

本文用一個(gè)計(jì)數(shù)器的例子來描述在C#中如何使用Singleton模式:計(jì)數(shù)的值設(shè)計(jì)為計(jì)數(shù)器類的一個(gè)私有成員變量,它被4個(gè)不同的線程進(jìn)行讀寫操作,為保證計(jì)數(shù)的正確性,在整個(gè)應(yīng)用當(dāng)中必然要求計(jì)數(shù)器類的實(shí)例是唯一的。



2 Singleton的實(shí)現(xiàn)方式。

首先看看教科書方式的Singleton標(biāo)準(zhǔn)實(shí)現(xiàn)的兩種方法,以下用的是類C#偽代碼:

方法一:

using System;

namespace csPattern.Singleton

{

public class Singleton

{

static Singleton uniSingleton = new Singleton();

private Singleton() {}

static public Singleton instance()

{

return uniSingleton;

}

}

}

方法二:

using System;

namespace csPattern.Singleton

{

public class Singleton

{

static Singleton uniSingleton;

private Singleton() {}

static public Singleton instance()

{

if (null == uniSingleton)

{

uniSingleton = new Singleton _lazy();

}

return uniSingleton;

}

}

}



Singleton模式的實(shí)現(xiàn)有兩個(gè)技巧:一是使用靜態(tài)成員變量保存“全局”的實(shí)例,確保了唯一性,使用靜態(tài)的成員方法instance() 代替 new關(guān)鍵字來獲取該類的實(shí)例,達(dá)到全局可見的效果。二是將構(gòu)造方法設(shè)置成為private,如果使用new關(guān)鍵字創(chuàng)建類的實(shí)例,則編譯報(bào)錯(cuò),以防編程時(shí)候筆誤。

上面方法二的初始化方式稱為lazy initialization,是在第一次需要實(shí)例的時(shí)候才創(chuàng)建類的實(shí)例,與方法一中類的實(shí)例不管用不用一直都有相比,方法二更加節(jié)省系統(tǒng)資源。但是方法二在多線程應(yīng)用中有時(shí)會(huì)出現(xiàn)多個(gè)實(shí)例化的現(xiàn)象。

假設(shè)這里有2個(gè)線程:主線程和線程1,在創(chuàng)建類的實(shí)例的時(shí)候可能會(huì)遇到一些原因阻塞一段時(shí)間(比如網(wǎng)絡(luò)速度或者需要等待某些正在使用的資源的釋放),此時(shí)的運(yùn)行情況如下:

主線程首先去調(diào)用instance()試圖獲得類的實(shí)例,instance()成員方法判斷該類沒有創(chuàng)建唯一實(shí)例,于是開始創(chuàng)建實(shí)例。由于一些因素,主線程不能馬上創(chuàng)建成功,而需要等待一些時(shí)間。此時(shí)線程1也去調(diào)用instance()試圖獲得該類的實(shí)例,因?yàn)榇藭r(shí)實(shí)例還未被主線程成功創(chuàng)建,因此線程1又開始創(chuàng)建新實(shí)例。結(jié)果是兩個(gè)線程分別創(chuàng)建了兩次實(shí)例,對(duì)于計(jì)數(shù)器類來說,就會(huì)導(dǎo)致計(jì)數(shù)的值被重置,與Singleton的初衷違背。解決這個(gè)問題的辦法是同步。

下面看看本文的計(jì)數(shù)器的例子的實(shí)現(xiàn):



使用方法一:

using System;

using System.Threading;

namespace csPattern.Singleton

{

public class Counter

{

static Counter uniCounter = new Counter(); //存儲(chǔ)唯一的實(shí)例。

private int totNum = 0; //存儲(chǔ)計(jì)數(shù)值。

private Counter()

{

Thread.Sleep(100); //這里假設(shè)因?yàn)槟撤N因素而耽擱了100毫秒。

//在非lazy initialization 的情況下, 不會(huì)影響到計(jì)數(shù)。.

}

static public Counter instance()

{

return uniCounter;

}

public void Inc() { totNum ++;} //計(jì)數(shù)加1。

public int GetCounter() { return totNum;} //獲得當(dāng)前計(jì)數(shù)值。

}

}



以下是調(diào)用Counter類的客戶程序,在這里我們定義了四個(gè)線程同時(shí)使用計(jì)數(shù)器,每個(gè)線程使用4次,最后得到的正確結(jié)果應(yīng)該是16:



using System;

using System.IO;

using System.Threading;

namespace csPattern.Singleton.MutileThread

{

public class MutileClient

{

public MutileClient() {}

public void DoSomeWork()

{

Counter myCounter = Counter.instance(); //方法一

//Counter_lazy myCounter = Counter_lazy.instance(); //方法二

for (int i = 1; i < 5; i++)

{

myCounter.Inc();

Console.WriteLine("線程{0}報(bào)告: 當(dāng)前counter為: {1}", Thread.CurrentThread.Name.ToString(), myCounter.GetCounter().ToString());

}

}

public void ClientMain()

{

Thread thread0 = Thread.CurrentThread;

thread0.Name = "Thread 0";

Thread thread1 =new Thread(new ThreadStart(this.DoSomeWork));

thread1.Name = "Thread 1";

Thread thread2 =new Thread(new ThreadStart(this.DoSomeWork));

thread2.Name = "Thread 2";

Thread thread3 =new Thread(new ThreadStart(this.DoSomeWork));

thread3.Name = "Thread 3";

thread1.Start();

thread2.Start();

thread3.Start();

DoSomeWork(); //線程0也只執(zhí)行和其他線程相同的工作。

}

}

}

(接

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
一区二区精彩视频| 欧美xxxx18性欧美| 电影亚洲精品噜噜在线观看| 蜜乳av综合| 一区二区自拍偷拍| 一区二区成人网| 亚洲6080在线| 亚洲欧美日韩一二三区| 亚洲成在人线在线播放| 久久亚洲二区| 高清视频在线www色| 综合久久2023| 久久久.com| 国产 欧美 在线| 手机在线观看毛片| 女~淫辱の触手3d动漫| 高潮毛片在线观看| 日韩精品99| 91蜜桃网站免费观看| 亚洲无码精品在线观看| 免费性色视频| 成年人免费看的视频| 四虎永久在线精品| 狠狠干一区二区| 精品国产无码在线| 无码任你躁久久久久久久| 日本中文字幕一区二区有码在线| 日产中文字幕在线精品一区| 水莓100国产免费av在线播放| 欧美在线播放一区二区| 亚洲天堂av线| √资源天堂中文在线| 美洲天堂一区二卡三卡四卡视频| 国产熟女一区二区三区四区| 香蕉国产在线视频| www.国产.com| 精品国产一区二区三区麻豆小说| 午夜老司机精品| 肉丝一区二区| 色噜噜噜噜噜噜| 亚洲精品97久久久babes| 人人精品亚洲| 性欧美长视频免费观看不卡| 免费精品视频最新在线| 2020中文字幕在线| 精品亚洲一区二区| 亚洲精品福利资源站| av一区二区三区免费观看| 天海翼一区二区三区免费| 免费高清特黄a大片| 欧美日韩一区二区国产| 生活片a∨在线观看| 亚洲精品欧美日韩专区| 国产一区二区自拍| 国产精品免费网站| 亚洲人成毛片在线播放女女| 亚洲综合色视频在线观看| 好吊日av在线| 欧美aa国产视频| 免费成人看片| 日韩精品亚洲专区在线观看| 手机在线观看毛片| 日韩情爱电影在线观看| 色婷婷久久av| 亚洲欧美视频在线观看视频| 久久夜色精品| 国产精品小仙女| 欧美性资源免费| 亚洲女人被黑人巨大进入al| 成人在线免费网站| 麻豆久久婷婷| 国产露脸91国语对白| 蜜桃视频在线观看91| 两根大肉大捧一进一出好爽视频| 久久精品72免费观看| 亚洲黄色三级视频| 无码人妻少妇伦在线电影| 97av视频在线观看| 国产精品腿扒开做爽爽爽挤奶网站| 国产熟妇一区二区三区四区| 欧美猛男同性videos| 无码人妻精品一区二区50| 亚洲综合视频| 蜜桃传媒九九九| 国产精品视频免费在线观看| 国产精品亚洲不卡a| 青梅竹马是消防员在线| 五月天婷婷激情视频| 91午夜精品亚洲一区二区三区| 国产理论片免费观看| 天天干夜夜干| 国产一区二区女| 美女精品一区最新中文字幕一区二区三区| 黄网站免费在线| 欧美一区二区黄色| 伊人男人综合视频网| 色欧美片视频在线观看| 国产精品露出视频| 国产精品久久久久久一区二区三区| 97香蕉超级碰碰久久免费软件| 久久黄色片视频| 国产精品黄色av| 国产真实乱子伦| 四虎影院成人在线观看| 免费成人三级| 永久看看免费大片| 精品在线观看国产| 日本美女在线中文版| 欧美变态视频| 国产欧美一区二区三区国产幕精品| 熟女少妇一区二区三区| 美女撒尿一区二区三区| 超碰中文字幕在线| 国产亚洲精品一区二区在线观看| 国产污污在线观看| 蜜臂av日日欢夜夜爽一区| 欧美国产日韩在线观看| 亚洲日本欧美在线| 日韩激情视频在线| 狠狠躁夜夜躁人人爽天天天天97| 蜜桃一级网站.| 国产麻豆一级片| 国产主播在线播放| 国内精品久久久久久中文字幕| 欧美日韩一区成人| 国产肥臀一区二区福利视频| 欧美激情一区二区三区在线视频| 国产91久久精品一区二区| 久久久久久无码精品人妻一区二区| 一区二区理论电影在线观看| 国产麻豆精品视频| 首播影院在线观看免费观看电视| 国产美女情趣调教h一区二区| 成人在线观看视频app| 91大神在线资源观看无广告| 九九九九精品| 岛国视频一区免费观看| 亚洲第一黄网| 国产激情视频一区二区三区| 亚洲国产影院| 国产精品香蕉在线观看| 中文字幕在线观看| 亚洲麻豆一区二区三区| 男女爱爱免费网站| 国产精品欧美激情| 又黄又爽的视频在线观看| 色视频一区二区| 国产午夜福利100集发布| 欧洲大片精品免费永久看nba| 日韩av成人在线观看| 久久久久久这里只有精品| 午夜精品久久久内射近拍高清| 国产成人福利片| 福利片免费在线观看| 9久re热视频在线精品| 亚洲欧美日韩久久久久久| 美女又黄又免费| 欧美伦理一区二区| 中文字幕亚洲欧美在线| 欧美亚洲愉拍一区二区| 三上悠亚在线观看视频| 日韩一级欧洲| 2025中文字幕| 好吊一区二区三区| 亚洲精选中文字幕| 5月婷婷6月丁香| 色网视频在线| 91精品一区二区三区在线观看| 国产欧美日韩三区| 香蕉成人伊视频在线观看| 在线精品福利| 久久亚洲成人av| 亚洲一级网站| 热久久中文字幕| 重囗味另类老妇506070| 偷偷色噜狠狠狠狠的777米奇| 伊人影院在线视频| 精品久久久久久最新网址| 国产亚洲午夜高清国产拍精品| 国产视色精品亚洲一区二区| 精品成人一区二区三区| 午夜精品一区二区三区电影天堂| 精品三级av在线导航| 成人日韩在线观看| 国产精品多人| 黑人巨大精品欧美一区二区奶水| 午夜视频在线观看一区| 涩涩视频在线播放| 国产精品三级在线观看无码| 亚洲蜜桃视频| 中文字幕午夜精品一区二区三区| 欧美日韩国产丝袜另类| 日韩一区二区不卡视频| 亚洲一区日韩| 色婷婷一区二区三区四区| 欧美在线观看视频在线| 久久午夜精品| 成人午夜在线观看视频| 久久精品91| 99999精品视频| 亚洲精品在线91| 麻豆视频在线播放| 国产日韩欧美电影| 欧美日韩在线综合| 久久久久国色av免费观看性色| 青青草原在线免费观看| 国产成人免费看一级大黄| 欧美午夜18电影| a中文字幕www| 国产手机视频在线观看| 欧美日韩一区精品| 人交獸av完整版在线观看| 99久久免费精品国产免费| 欧美色视频一区| 亚洲自拍第三页| av日韩在线看| 欧美黄色影院| 全彩无遮拦全彩口工漫画全彩| 99精品一区| 色综合久久久久网| 午夜精品一二三区| 91美女免费看| 久久久久久久午夜| 国产成人高清精品| 午夜免费激情视频| 亚洲国产精品久久久久秋霞不卡| 91精品亚洲| 日韩三级av在线| 欧美日韩成人一区二区| 国产超碰在线播放| av漫画在线观看| 久久久久久久久久久久久久久久av| 中文字幕+乱码+中文乱码www| 欧美伊人亚洲伊人色综合动图| 久久精品影视伊人网| 久久久久久久久久久久久久免费看| 91在线精品播放| 亚洲国产精品三区| 欧美1区2区3区| 国产欧美一区二区三区网站| 亚洲成人天堂网| 国精产品一区| 国产日韩欧美黄色| 成人午夜剧场免费观看完整版| 岛国av在线不卡| 蜜桃视频在线观看一区二区| 亚洲动漫在线观看| 中文字幕一区二区三区免费视频| 免费欧美在线视频| 午夜精品一区二区三区在线视频| 日日夜夜精品视频免费观看| 久久精品99久久久久久久久| 日韩电影中文字幕在线| 欧美日韩激情四射| 日韩video| 国产精品白浆| 国产成人精品片| 午夜不卡一区| 色综合天天综合网天天狠天天| 天天操天天摸天天干| 日本高清视频在线| 国产剧情一区二区三区| 欧美性猛交xxxx乱大交退制版| 欧美成人dvd在线视频| 中文在线一区二区| 稀缺小u女呦精品呦| 中文字幕久久久久| 欧美日韩亚洲视频一区| 国产欧美88| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产一区二区日韩精品| 免费在线国产| 国产精品自产拍| 久久综合999| 精品无人区无码乱码毛片国产| 波多野结衣视频观看| 丁香六月激情婷婷| 国产精品国产三级国产有无不卡| 四虎精品永久免费| 日本一道本视频| 亚洲超丰满肉感bbw| 国产午夜福利一区二区| 久久国产毛片| 国产私拍精品| 亚洲第一精品夜夜躁人人躁| 国产一卡不卡| 国产免费观看久久| 国产做受69高潮| 日本免费在线视频观看| 欧美羞羞视频| 51国产成人精品午夜福中文下载| 波多野结衣av一区二区全免费观看| 久久久久国色av免费看影院| 欧美精品性视频| 欧美第一视频| 日本v片在线高清不卡在线观看| 日韩亚洲一区在线| 国产精品久久久久久久99| 久久精品亚洲热| 免费无码一区二区三区| 亚洲欧美天堂在线| 日韩国产欧美一区二区| 精品国产一区二区三区av片| 欧美三级午夜理伦三级富婆| 亚洲成人黄色影院| 天天摸夜夜添狠狠添婷婷| 欧美激情视频三区| 免费在线观看黄色av| 亚洲激情丁香| 高清中文字幕mv的电影| 人人爽人人爽人人片av| 少妇人妻偷人精品一区二区| 一级国产黄色片| 精品久久久久久久久久久院品网| 亚洲+变态+欧美+另类+精品| 色涩视频在线观看| 亚洲精品在线观看av| 亚洲一卡久久| 日韩视频在线观看一区二区| 亚洲资源在线网| jizz大全欧美jizzcom| 一本色道久久综合亚洲精品不卡| 欧美日韩在线高清| 亚洲少妇在线| 亚洲精品国产精品国自| 国产亚洲第一伦理第一区| 午夜视频免费播放| 日韩不卡在线观看日韩不卡视频|