Unity 游戲框架搭建 (二) 單例的模板

上一篇文章中說到的manager of managers,其中每個manager都是單例的實現(xiàn),當(dāng)然也可以使用靜態(tài)類實現(xiàn),但是相比于靜態(tài)類的實現(xiàn),單例的實現(xiàn)更為通用,可以適用大多數(shù)情況。如何設(shè)計這個單例的模板?
??先分析下需求,當(dāng)設(shè)計一個manager時候,我們希望整個程序只有一個該manager對象實例,一般馬上能想到的實現(xiàn)是這樣的:

public class XXXManager {

private static XXXManager instance = null;

private XXXManager {
    // to do ...
}

public static XXXManager() {
    if (instance == null)
    {
        instance = new XXXManager();
    }
    return instance;
}

}

如果一個游戲需要10個各種各樣的manager,那么以上這些代碼要復(fù)制粘貼好多遍。重復(fù)的代碼太多!!!想要把重復(fù)的代碼抽離出來,怎么辦?答案是引入泛型。實現(xiàn)如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace QFramework {
public abstract class QSingleton<T> where T : QSingleton<T>
{
protected static T instance = null;

    protected QSingleton()
    {
    }

    public static T Instance()
    {
        if (instance == null)
        {
            // 如何new 一個T???
        }

        return instance;
    }
}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容