C#单例模式

南楼画角 提交于 2020-03-22 00:02:47
1、定义
单例模式是确保一个类只有一个实例,并提供一个全局访问方式的设计方法
2、UML类图
3、应用场景
  需要频繁实例化然后销毁的对象。 
  创建对象时耗时过多或者耗资源过多,但又经常用到的对象。 
  有状态的工具类对象。 
  频繁访问数据库或文件的对象。
 
4、C#实现单例模式
4.1 单线程单例模式
代码解析:
Singleton的构造函数必须是私有的,确保外层无法通过new进行实例化对象
静态变量的生命周期同应用程序的生命周期相同,可以定义一个私有的全局静态变量_instance来保存该类的唯一实例
提供一个可访问的静态方法访问类的实例,在该方法内通过判断_instance是否为null,如果是null就创建一个实例,否则向外部返回实例
 
4.2 多线程单例模式
1) lock方式
 
代码解析:
外层if判断_instance不为null时,直接返回实例,避免每次获取实例时进行锁定,节省了 性能损耗
当外层判断成功时,使用lock锁定,保证只创建一个实例
2) 静态构造函数
 
 
代码解析:
静态构造函数只会执行一次
3) 静态变量初始化
代码解析:
静态变量在初次运行时就会初始化,readonly确保变量运行时无法修改
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!