Unity 游戏框架搭建 (二) 单例的模板

上一篇文章中说到的manager of managers,其中每个manager都是单例的实现,当然也可以使用静态类实现,但是相比于静态类的实现,单例的实现更为通用,可以适用大多数情况。如何设计这个单例的模板?
  先分析下需求,当设计一个manager时候,我们希望整个程序只有一个该manager对象实例,一般马上能想到的实现是这样的:

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,那么以上这些代码要复制粘贴好多遍。重复的代码太多!!!想要把重复的代码抽离出来,怎么办?答案是引入泛型。实现如下:

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

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

    protected QSingleton()
    {
    }

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

        return instance;
    }
}

}

你可能感兴趣的:(Unity 游戏框架搭建 (二) 单例的模板)