天天看点

Unity3d游戏开发之-单例设计模式-单线程一

单例模式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的结果,
        这个明显不是我们想要的,因此,我们应该通过一个锁来互斥这个方法,
        当很多线程同时访问的时候,只允许一个线程进入到代码中执行,
        而其他的便只能处于挂起的状态。具体的解决多线程的代码请看后面我的分享。
        */
    }
}
           

继续阅读