优雅的QSignleton (一) Singleton单例实现

发表于2017-11-07
评论0 1.2k浏览

接下来笔者来介绍如何用QSingleton实现一个简单的单例。
代码如下。

  • Singleton.cs
namespace QFramework.Example
{
    using UnityEngine;

    class Class2Singleton :QSingleton<class2singleton>
    {
        private static int mIndex = 0;

        private Class2Singleton() {}

        public override void OnSingletonInit()
        {
            mIndex  ;
        }

        public void Log(string content)
        {
            Debug.Log("Class2Singleton"   mIndex   ":"   content);
        }
    }

    public class Singleton : MonoBehaviour
    {
        private void Start()
        {
            Class2Singleton.Instance.Log("Hello World!");

            // delete instance
            Class2Singleton.Instance.Dispose();

            // a differente instance
            Class2Singleton.Instance.Log("Hello World!");
        }
    }
}

只需简单继承QSingleton,并声明非public构造方法即可。如果有需要获取单例初始化的时机,则可以选择重载OnSingletonInit方法。

结果:

注意:

  • 建议在OnSingletonInit方法中进行单例的初始化操作而不是在构造函数中。
  • QSingleton.cs只适合实现没有继承其他父类的单例。

相关链接:

转载请注明地址:凉鞋的笔记

微信公众号:liangxiegame

output/writing/Unity游戏框架搭建

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引