先看文字
单例模式(Singleton Pattern)
保证一个类仅有一个实例,并提供一个访问它的全局访问点
- 单例类只能有一个实例;
 
- 单例类必须自己创建自己的唯一实例;
 
- 单例类必须给其所有对象提供这一实例;
 
主要解决
一个全局使用的类 <=>  频繁的创建于销毁
何时使用
控制实例数目,节省系统资源
关键代码
构造函数是私有的
优点
- 在内存里只有有一个实例,减少了内存的开销
 
- 避免资源被多重占用(如写文件操作)
 
现实场景
- 生产一个唯一的产品序列号
 
- 数据库的连接
 
注意
获取实例中需要使用同步锁,防止多线程同时进入,造成被多次实例化
unity中
有时会看到类似下面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   | using UnityEngine; using System.Collections;
  public class TestMange : MonoBehaviour {
      public static TestMange _instance;
      public static TestMange Instance     {         get         {             if (_instance == null)             {                 GameObject _obj = new GameObject();                 _obj.name = "TestMangeObject";
                   //对象添加脚本                 _instance = _obj.AddComponent<TestMange>();                 return _instance;             }             return _instance;         }     }
      private void Awake()     {         _instance = this;     }
      public void TestToDo()     {         Debug.Log("hello world");     }
  }
  //如访问 TestMange.Instance.TestToDo();
   |