单例模式1:
单线程一
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 单例设计模式写法
{
/// <summary>
/// 单例模式一 单线程一
/// </summary>
public class Singleton //1:定义一个public类
{
private static Singleton instance; //2:定义一个私有的静态变量来保持类的实例
private Singleton() { } //3:定义一个私有的静态构造函数,使外界不能访问
public static Singleton Instance //4:定义一个public静态的方法,提供一个全局访问点,同时也可以定义共有属性来提供全局访问点
{
get { return instance; } //5:返回类的实例
}
static Singleton() //6:静态无参构造函数
{
if (instance == null) //7:判断类的实例是不是不存在为空
{
instance = new Singleton(); //8:为它创建一个实例
}
}
/*【单线程 说明:】
上面的单例模式的实现是有问题的,
当多个用户或者方法同时访问的时候,
便会出现多个用户同时拿到了instance==null的结果,
这个明显不是我们想要的,因此,我们应该通过一个锁来互斥这个方法,
当很多线程同时访问的时候,只允许一个线程进入到代码中执行,
而其他的便只能处于挂起的状态。具体的解决多线程的代码请看后面我的分享。
*/
}
}