单例模板

作者: Codk | 来源:发表于2017-02-28 17:16 被阅读0次

为避免来反复写单例模式,在框架中构建一个单例模板,需要用的地方直接继承就可。

基本要求

  1. 单例模式必须继承自MonoBehaviour。
  2. 由于Unity中利用单例模式需要用到Awake(),因此,对于继承关系的模板,需要对Awake进行修饰为protected,这样继承后的模板才能使用Awake,因为继承关系只能访问public和protected修饰的方法。同时为了能在子类中修改,还要对Awake加上virtual修饰,便于子类修改。

完整代码

public abstract class Singleton<T> : MonoBehaviour
    where T : MonoBehaviour {
    private static T m_instance = null;
      public static T Instance {
        get { return m_instance; }
     }
    protected virtual void Awake() {
        m_instance = this as T;
    }
}

使用方法

在需要使用模板的地方,继承此模板,如下代码:
public class XXX : Singleton<XXX>

相关文章

  • 模板

    使用场景:设计单例类的时候,可以设计通用的单例类,使用模板。 KCBP中使用模板的地方:

  • 单例模板

    为避免来反复写单例模式,在框架中构建一个单例模板,需要用的地方直接继承就可。 基本要求 单例模式必须继承自Mono...

  • C++单例模板

    单例模板类: template classSingleton { public: Singleto...

  • python单例模式

    python单例模式实现方式 使用模板 python模块是天然的单例模式(.pyc文件的存在) 使用__new__...

  • monobehavier单例模板

    using UnityEngine; using System.Collections; public class...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 自己整理的一些关于Spring源码的总结,面试之前回来看看(不定

    Spring中的设计模式? 1.工厂2.单例(看看内部枚举实现的单例)3.委派(delegate)4.模板方法(r...

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • Unity 游戏框架搭建 (三) MonoBehaviour单例

      上一篇文章讲述了如何设计C#单例的模板。也随之抛出了问题:如何设计接收MonoBehaviour生命周期的单例...

  • Unity 游戏框架搭建 (三) MonoBehaviour单例

    上一篇文章讲述了如何设计C#单例的模板。也随之抛出了问题: 如何设计接收MonoBehaviour生命周期的单例的...

网友评论

    本文标题:单例模板

    本文链接:https://www.haomeiwen.com/subject/dxgxgttx.html