浅谈单例的三种实现--C#
来源:互联网 发布:计算机java编程入门 编辑:程序博客网 时间:2024/06/05 19:29
传统的double check :
缺陷:
1.代码很臃肿
2.double check性能稍微差一些(比起后面的实现版本)
利用.net framework static特性的版本版:
1.如何保证单例和线程安全?
因为静态实例在AppDomain里面只有一份内存
2.缺陷?
静态构造函数在field之前执行,没有lazy(只有用的时候才实例)
lazy版本
改进的地方:
显示声明静态构造函数,告诉编译器,在field之后执行,这样就只有field被拿来用了,才会实例化
public sealed class Singleton{ private static Singleton instance = null; private static readonly object padlock = new object(); Singleton() { } public static Singleton Instance { get { if (instance == null) { lock (padlock) { if (instance == null) { instance = new Singleton(); } } } return instance; } }}
缺陷:
1.代码很臃肿
2.double check性能稍微差一些(比起后面的实现版本)
利用.net framework static特性的版本版:
public sealed class Singleton{ public static readonly Singleton instance = new Singleton(); private Singleton() { }}
1.如何保证单例和线程安全?
因为静态实例在AppDomain里面只有一份内存
2.缺陷?
静态构造函数在field之前执行,没有lazy(只有用的时候才实例)
lazy版本
public sealed class Singleton{ public static readonly Singleton instance = new Singleton(); // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static Singleton() { } private Singleton() { }}
改进的地方:
显示声明静态构造函数,告诉编译器,在field之后执行,这样就只有field被拿来用了,才会实例化
2 0
- 浅谈单例的三种实现--C#
- 单例的三种实现方式
- 单例模式的三种实现
- 单例模式的三种实现
- 实现单例的三种方式
- 单例模式的三种实现
- C#浅谈单例模式
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- 单例模式的三种实现方式:singleton
- 单例的三种实现及理解
- R语言seed问题
- windowns下qt5.2.0(mingw)安装glut(opengl)工具包
- 循环-11. 水仙花数(20)
- redhat 中配置静态 IP
- 總論判讀 6-5
- 浅谈单例的三种实现--C#
- nginx框架总结
- Swift源码分析----swift-object-replicator(1)
- Sum Root to Leaf Numbers
- 数组-10. 求整数序列中出现次数最多的数
- 基于Go的D-Bus框架(二)
- rac环境下vip/public/private IP的区别
- Android开发之网络通信(HttpURLConnection,HttpClient,HttpGet,HttpPost)
- hdu 2050 折线分割平面 递推