日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#Singleton模式學(xué)習(xí)經(jīng)驗

學(xué)習(xí)C#語言時,經(jīng)常會遇到C# Singleton模式問題,這里將介紹C# Singleton模式問題的解決方法。

創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)平鄉(xiāng),10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

C# Singleton模式

任何編寫過MFC應(yīng)用的開發(fā)人員(不管編寫的應(yīng)用是如何的?。┒贾朗裁词莝ingleton。singleton是類的唯一實例。使用MFC時,從CWinApp派生的應(yīng)用類的全局實例就是singleton。當(dāng)然,在MFC應(yīng)用中,盡管規(guī)定不允許創(chuàng)建應(yīng)用類的第二個實例,但是并沒有什么可以阻止你那么做。在這種情況下,當(dāng)你需要某個特定的類表現(xiàn)出singleton行為時,一個更好的替代方案是讓這個類自己負(fù)責(zé)確保只會被創(chuàng)建一個并且只有一個實例。再回到MFC,我們知道保證應(yīng)用類實例的唯一性的責(zé)任被留給了開發(fā)應(yīng)用的程序員,他(她)們必須小心不要創(chuàng)建應(yīng)用類的第二個實例。

singleton的訪問被局限于必須通過靜態(tài)方法Instance。多數(shù)情況下,singleton應(yīng)該具有全局可見性,這可通過將其創(chuàng)建方法public來實現(xiàn)。和用全局變量模擬singleton不同,這種模式可以防止創(chuàng)建出多余的實例,同時兼具全局可見性。注意,該類的構(gòu)造器被置為private,這就意味著沒有任何辦法可以繞過靜態(tài)方法Instance來直接創(chuàng)建類的實例。

 
 
 
  1. class Singleton
  2. {
  3. private static Singleton singleton = null;
  4. public static Singleton Instance()
  5. {
  6. if (null == singleton)
  7. singleton = new Singleton();
  8. return singleton;
  9. }
  10. private Singleton()
  11. {
  12. }

C# Singleton模式的作用還不止于此,尤其是可以將其擴(kuò)展,以創(chuàng)建類的可變數(shù)量的實例。假定有一個應(yīng)用,當(dāng)需要執(zhí)行特定任務(wù)時就需要調(diào)度一個工作者線程??紤]到節(jié)約系統(tǒng)資源,我們使用singleton來實現(xiàn)這個線程類。不久,需要singleton線程處理的任務(wù)變得密集起來,如果我們決定擴(kuò)展這個應(yīng)用,我們可以很方便地增加工作者線程的數(shù)量,因為線程的創(chuàng)建和對它們的訪問授權(quán)的所有邏輯都被定義在一個類中。

C# Singleton模式的另外一個優(yōu)點是singleton的創(chuàng)建可以被延遲到真正需要的時候。不管是否需要,全局變量一開始就被創(chuàng)建,但這個全局對象并不一定是一直都需要的。C#不支持全局變量,但還是有可能在某個方法的一開始就在堆上創(chuàng)建了一個對象并直到很久以后才使用它。果真如此的話,C# Singleton模式為這種案例提供了一個優(yōu)雅的解決方案。

另外,作為一個工具,在C# Singleton模式的實現(xiàn)上,C#優(yōu)于C++,盡管這個優(yōu)點很微妙,但絕對重要?;贑++的實現(xiàn)需考慮singleton帶來的一些和生命期管理有關(guān)的棘手問題,而在C#中則由運(yùn)行時自動處理。這個優(yōu)點是有意義的,在C# Singleton模式的C#實現(xiàn)版本中,你只需保證在需要singleton的時候,你擁有一個活的引用即可。

C#示例:

 
 
 
  1. using System;
  2. class Singleton
  3. {
  4. private static Singleton singleton = null;
  5. public static Singleton Instance()
  6. {
  7. if (null == singleton)
  8. singleton = new Singleton();
  9. return singleton;
  10. }
  11. private Singleton()
  12. {
  13. }
  14. }
  15. class Application
  16. {
  17. public static void Main()
  18. {
  19. Singleton s1 = Singleton.Instance();
  20. //Singleton s2 = new Singleton(); //錯誤:構(gòu)造器不可訪問
  21. Singleton s2 = Singleton.Instance();
  22. if (s1.Equals(s2)) // 引用相等
  23. Console.WriteLine("Instances are identical");
  24. }

分享標(biāo)題:C#Singleton模式學(xué)習(xí)經(jīng)驗
標(biāo)題來源:http://m.5511xx.com/article/cccjegd.html