C#使用Singleton模式

开发 后端
这里介绍C#使用Singleton模式,有些时候在整个应用程序中,会要求某个类有且只有一个实例,这个时候可以采用Singleton模式进行设计。

C#语言有很多值得学习的地方,这里我们主要介绍C#使用Singleton模式,包括介绍C#使用Singleton模式的实现有两个技巧等方面。

C#使用Singleton模式

Singleton(译为单件或单态)模式是设计模式中比较简单而常用的模式。

有些时候在整个应用程序中,会要求某个类有且只有一个实例,这个时候可以采用Singleton模式进行设计。C#使用Singleton模式设计的类不仅能保证在应用中只有一个实例,而且提供了一种非全局变量的方法进行全局访问,称为全局访问点,这样对于没有全局变量概念的纯面向对象语言来说是非常方便的,比如C#。

本文用一个计数器的例子来描述在C#使用Singleton模式:计数的值设计为计数器类的一个私有成员变量,它被4个不同的线程进行读写操作,为保证计数的正确性,在整个应用当中必然要求计数器类的实例是唯一的。

Singleton的实现方式

首先看看教科书方式的Singleton标准实现的两种方法,以下用的是类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模式的实现有两个技巧:一是使用静态成员变量保存“全局”的实例,确保了唯一性,使用静态的成员方法instance() 代替 new关键字来获取该类的实例,达到全局可见的效果。二是将构造方法设置成为private,如果使用new关键字创建类的实例,则编译报错,以防编程时候笔误。

【编辑推荐】

  1. C#窗体里调用浅谈
  2. C#调用ListEmployee命令
  3. C# CreateEmployeeDefinition()函数
  4. C#实现断点续传详细剖析
  5. C# Employee对象浅谈
责任编辑:佚名 来源: 博客园
相关推荐

2009-09-02 16:23:27

C# Singleto

2009-08-31 15:48:02

C# Singleto

2009-08-25 18:04:30

C#实现Singlet

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-26 16:26:37

C#迭代器模式

2009-08-11 13:59:41

迭代器模式C# Iterator

2009-08-04 09:22:26

C#工厂模式

2011-07-18 16:51:51

Cocoa 单态 模式

2012-08-22 10:10:25

单态单态设计设计模式

2009-08-07 14:34:33

C#模式字符串

2009-09-07 05:10:52

C#模式窗体

2009-08-31 16:01:31

C#和设计模式

2009-09-07 04:56:52

C#模式窗体

2009-08-20 17:30:56

C#异步编程模式

2009-09-01 09:16:57

C#使用SharpZi

2009-08-19 14:26:58

C# JavaScri
点赞
收藏

51CTO技术栈公众号