单例模式的特点:
- 只能有一个实例
- 必须自己创建一个唯一的实例
- 必须给其他对象提供此唯一实例
相当于是全局共享一个此对象的实例
单例模式的代码如下:
以下为线程安全的单例模式代码,不安全的单例模式代码只需移除锁即可
public class SnIrisVerify
{
//构造函数为私有,防止被外部初始化
private SnIrisVerify()
{
}
//静态对象,所有地方使用到的都是此对象
private static SnIrisVerify _SnIrisVerify=null;
//锁对象,用于防止同时创建对象
private static readonly object lockHelper = new object();
public static SnIrisVerify CreateInstance()
{
//判断对象是否被创建
if (_SnIrisVerify == null)
{
//在创建对象之前先锁住,防止被同时访问创建
lock (lockHelper)
{
//在锁释放后,判断对象是否已经创建,防止重复创建
if (_SnIrisVerify == null)
_SnIrisVerify = new SnIrisVerify();
}
}
return _SnIrisVerify;
}
}
在C#中可使用readonly
public class SnIrisVerify
{
private SnIrisVerify(){}
public static readonly SnIrisVerify GetSnIrisVerify()=new SnIrisVerify();
}