单例模式MVC

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SingleLeton
{
public class SingleLeton
{
//声明一个静态的变量用于存储实体
//3.为了保存创建的实例定义一个静态的变量来保存的实例
private static SingleLeton _instance = null;

/// <summary>
/// 4.创建一个对象,用于枷锁,防止多线程创建多个实例
/// </summary>
private static object locker = new object();

/// <summary>
/// 1.私有的构造函数,杜绝了用户直接New来获取对象实例(防止用户随便New 为的就是这个主题单例模式,不然的话 就不是单例的可能是都可以访问的那种)
/// </summary>
private SingleLeton()
{

}

/// <summary>
/// 2.定义了静态的公共方法用于获取实例对象
/// 提供一个实例访问入口
/// </summary>
/// <returns></returns>
public static SingleLeton GetIntence()
{
//如果_instance==null才进行加锁
if (_instance == null)
{


//第一个线程进来,就把这片区域锁住,其他的线程进不来,等当前线程完成后其他线程才可以进场
lock (locker)
{
if (_instance == null)
{
//因为在同一个类可以访问私有的 故可以New
_instance = new SingleLeton();
}
}
}
return _instance;
}
}
}

原文地址:https://www.cnblogs.com/yaodengfeng/p/7800369.html