c#设计模式之单例模式的实现方式-创新互联

场景描述

创新互联是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信小程序开发,十多年建站对玻璃钢坐凳等多个行业,拥有丰富的网站维护经验。

单例模式对于我们来说一点也不模式,是一个常见的名称,单例模式在程序中的实际效果就是:确保一个程序中只有一个实例,并提供一个全局访问点,节省系统资源

单例模式无论是在实际开发中还是在软件应用中比较常见,比如,windows系统的任务管理器、IIS的HttpApplication、实际项目中的日志组件等等

实现方式

单例模式为了实现一个实例,那么只有不把实例创建暴露出去,只通过类本身来创建实例,为了实现效果,需要定义一个私有构造函数

单例模式实现方式有:饿汉式、懒汉式、双重验证式、静态内部类

下面分别对每一种实现方式做一个简单的实例,以及其优缺点

饿汉式

/// 
 /// 创建一个 Singleton 类(饿汉式)
 /// 这种方式比较常用,但容易产生垃圾对象。
 ///优点:没有加锁,执行效率会提高。
 ///缺点:类加载时就初始化,浪费内存。
 ///它基于 classloder 机制避免了多线程的同步问题,不过,instance 在类装载时就实例化,
 ///虽然导致类装载的原因有很多种,在单例模式中大多数都是调用 getInstance 方法,
 ///但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化 instance 显然没有达到 lazy loading 的效果。
 /// 
 public class SingleObject
 {
  //创建 SingleObject 的一个对象
  private static SingleObject instance = new SingleObject();

  //让构造函数为 private,这样该类就不会被实例化
  private SingleObject() {
   Console.WriteLine("我被创建了.饿汉式");
  }

  //获取唯一可用的对象
  public static SingleObject GetInstance()
  {
   return instance;
  }

  public void ShowMessage()
  {
   Console.WriteLine("Hello World.饿汉式");
  }
 }

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:c#设计模式之单例模式的实现方式-创新互联
文章起源:http://pwwzsj.com/article/ejpgi.html