天天看點

unity單利模闆

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;
    }
}