自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#使用Singleton模式

開發(fā) 后端
這里介紹C#使用Singleton模式,有些時(shí)候在整個(gè)應(yīng)用程序中,會(huì)要求某個(gè)類有且只有一個(gè)實(shí)例,這個(gè)時(shí)候可以采用Singleton模式進(jìn)行設(shè)計(jì)。

C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#使用Singleton模式,包括介紹C#使用Singleton模式的實(shí)現(xiàn)有兩個(gè)技巧等方面。

C#使用Singleton模式

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

有些時(shí)候在整個(gè)應(yīng)用程序中,會(huì)要求某個(gè)類有且只有一個(gè)實(shí)例,這個(gè)時(shí)候可以采用Singleton模式進(jìn)行設(shè)計(jì)。C#使用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í)例是唯一的。

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

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

方法一:

  1. using System;  
  2. namespace csPattern.Singleton  
  3. {  
  4. public class Singleton  
  5. {  
  6. static Singleton uniSingleton = new Singleton();  
  7. private Singleton() {}  
  8. static public Singleton instance()  
  9. {  
  10. return uniSingleton;  
  11. }  
  12. }  
  13. }  

方法二:

  1. using System;  
  2. namespace csPattern.Singleton  
  3. {  
  4. public class Singleton  
  5. {  
  6. static Singleton uniSingleton;  
  7. private Singleton() {}  
  8. static public Singleton instance()  
  9. {  
  10. if (null == uniSingleton)  
  11. {  
  12. uniSingleton = new Singleton _lazy();  
  13. }  
  14. return uniSingleton;  
  15. }  
  16. }  
  17. }  

C#使用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í)候筆誤。

【編輯推薦】

  1. C#窗體里調(diào)用淺談
  2. C#調(diào)用ListEmployee命令
  3. C# CreateEmployeeDefinition()函數(shù)
  4. C#實(shí)現(xiàn)斷點(diǎn)續(xù)傳詳細(xì)剖析
  5. C# Employee對(duì)象淺談
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-09-02 16:23:27

C# Singleto

2009-08-25 18:04:30

C#實(shí)現(xiàn)Singlet

2009-08-31 15:48:02

C# Singleto

2009-08-10 17:41:42

C# Singleto

2021-01-18 05:18:18

C# 8模式C# 7

2009-08-26 10:24:04

C# Observer

2009-07-09 17:30:59

Singleton模式C++ SingletJava Single

2009-07-08 17:25:05

Java Single

2009-08-11 13:59:41

迭代器模式C# Iterator

2009-08-26 16:26:37

C#迭代器模式

2009-08-04 09:22:26

C#工廠模式

2011-07-18 16:51:51

Cocoa 單態(tài) 模式

2012-08-22 10:10:25

單態(tài)單態(tài)設(shè)計(jì)設(shè)計(jì)模式

2009-08-07 14:34:33

C#模式字符串

2009-09-07 05:10:52

C#模式窗體

2009-09-07 04:56:52

C#模式窗體

2009-08-31 16:01:31

C#和設(shè)計(jì)模式

2009-08-20 17:30:56

C#異步編程模式

2009-08-19 14:26:58

C# JavaScri

2009-08-18 17:29:02

C#使用指針
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)