c#如何实现单例模式

  介绍

小编这次要给大家分享的是c#如何实现单例模式,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。

单例模式的实现分为两种:饿汉式和懒汉式。前者是在静态构造函数执行时就立即实例化,后者是在程序执行过程中第一次需要时再实例化。两者有各自适用的场景,实现方式也都很简单,唯一在设计时要考虑的一个问题就是:实例化时需要保证线程安全。

<强>饿汉式

饿汉式实现很简单,在静态构造函数中立即进行实例化:

公共类单例
  {
  私有静态只读的Singleton _instance=new Singleton ();
  公共静态单例实例
  {
  得到
  {
  返回_instance;
  }
  }
  }

这里的新单例()<代码> 等同于在静态构造函数中实例化。在C # 7中还可以进一步简写如下:

公共类单例
  {
  公共静态单例实例=比;新单();
  }//等同于:
  公共类单例
  {
  公共静态单例实例
  {
  {回报新单();}
  }
  }

这样会导致每次调用都会创建一个新实例。

<强>懒汉式

懒汉式单例实现需要考虑线程安全问题,先来看一段经典的线程安全的单列模式实现代码:

 LazySingleton公共类
  {
  私有静态只读的Lazy_instance=新Lazy(()=比;新的LazySingleton ());
  
  公共静态LazySingleton实例
  {
  {回报_instance.Value;}
  }
  }

调用示例:

公共类项目
  {
  公共静态void Main ()
  {
  var=LazySingleton.Instance实例;
  }
  }

使用Lazy可以使对象的实例化延迟到第一次被调用的时候执行,通过访问它的价值属性来创建并获取实例,并且读取一个Lazy实例属的价值性只会执行一次实例化代码,确保了线程安全。

看完这篇关于c#如何实现单例模式的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

c#如何实现单例模式