单例

虽然说游戏中涉及到的设计模式种类比较少,但是单例这种模式却随处可见,采用单例模式的类使用起来很方便。因为单例使用的比较多,所以如果每次使用单例时,都重新设计一下类结构,书写相关代码,让该类成为单例模式,这种方式会显得有些冗余,故抽象出来一个单例模板父类就比较快捷而优雅了。如果要使某个类成为单例模式,只需要继承该模板类就可以了。一种单例模板写法如下:

template <typename T>

class Singleton

{

    protected:

        static T* _instance;

        Singleton() {}

        virtual ~Singleton(){_instance = NULL;}

 

    public:

        static T& get_instance()

        {

            if (_instance == NULL) {

                _instance = new T();

            }

            return *_instance;

        }

}

template<typename T>

T* Singleton<T>::_instance = NULL;

 

假如要设计一个单例类Test, 则只需使用以下代码即可:

class Test : public Singleton<Test>

{

    ...

}

然后使用Test::get_instance().×××,即可调用该单例中的成员,这种实现方式看起来就要简洁优美些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值