设计模式(1)单例模式

来源:互联网 发布:qq mac 摄像头不能用 编辑:程序博客网 时间:2024/05/21 22:34

单例模式的特点:

  • 只能有一个实例
  • 必须自己创建一个唯一的实例
  • 必须给其他对象提供此唯一实例

相当于是全局共享一个此对象的实例

单例模式的代码如下:
以下为线程安全的单例模式代码,不安全的单例模式代码只需移除锁即可

 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();}