1、單例類隻能有一個執行個體。
2、單例類必須自己建立自己的唯一執行個體。
3、單例類必須給所有其他對象提供這一執行個體。
01:不繼承MonoBehaviour的類實作單利
這種模式涉及到一個單一的類,該類負責建立自己的對象,同時確定隻有單個對象被建立。
這個類提供了一種通路其唯一的對象的方式,可以直接通路,不需要執行個體化該類的對象。
class singleTemp
{
//私有化類執行個體
private static singleTemp _instance=new singleTemp();
//讓構造函數為 private,這樣該類就不會被其他類執行個體化
private singleTemp()
{
}
//提供外界唯一可以通路類執行個體的方法
public static singleTemp instance
{
get
{
return _instance;
}
}
public void show()
{
Console.WriteLine("single show");
}
}
02:實泛型單利模闆類
public class singleTemplate<T> where T : new() //where T : new() 為泛型限制,確定T類型是可以被new的
{
private static T _instance; //私有的T類型的靜态變量
public static T GetInstance() //擷取執行個體的函數
{
if (_instance == null) //判斷執行個體是否已存在
{
_instance = new T(); //不存在則建立新的執行個體
}
return _instance; //傳回執行個體
}
class test:singleTemplate<test>
{
public void show()
{
Console.WriteLine("testshow");
}
}
public class single : MonoBehaviour
{
private static single _instance;
public static single instance
{
get
{
if (_instance==null)
{
_instance = GameObject.FindObjectOfType<single>();
}
return _instance;
}
}
}
public class singleTemplate<T> : MonoBehaviour where T : MonoBehaviour
{
private static T _instance;
public static T instance
{
get
{
if (_instance==null)
{
_instance = GameObject.FindObjectOfType<T>() as T;
}
return _instance;
}
}