Singleton

      这个应该是最简单的一个设计模式,记得当初在学校学习C++时看到这样一个类,当时还觉得这确实是个技巧,但是那会基本上没有实际用到,这次在项目中则到处可见,个人觉得Singleton用到的场合还比较多,基本上叫做**Mgr之类的都是Singleton,当然经验还不足不知道是不是有些地方有滥用,我们项目中用到的是一个#define:

#define SINGLE_INSTANCE(class_name)  /

private: /

    class_name(); /

    class_name(const class_name&); /

    class_name& operator(const class_name&);/

public: /

     static class_name& instance() /

    {static class_name _instance;return _instance;}

这样假如定义了一个类:

class A

{

//这样就是一个Singleton类了

SINGLE_INSTANCE(A)

};

模板形式的更爽:

template< class T> class Singleton {
  Singleton( const Singleton&);
  Singleton& operator=( const Singleton&);
protected:
  Singleton() {}
  virtual ~Singleton() {}
public:
  static T& instance() {
    static T theInstance;
    return theInstance;
  }
};
 
// A sample class to be made into a Singleton
class MyClass : public Singleton<MyClass> {
  int x;
protected:
   friend class Singleton<MyClass>;
  MyClass() { x = 0; }
public:
  void setValue( int n) { x = n; }
  int getValue() const { return x; }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值