<漫谈设计模式>======对象创建型模式之单例模式

单例模式


1.作用 :
   保证一个类仅有一个实例,并且提供一个访问它的全局访问点.
2.使用动机
   保证一个类只能有一个实例,也就是你无法通过new操作符不受限制的生成对象实例.
3.适用范围
<1>当类只能有一个实例,而且客户可以从一个众所周知的访问点访问它时.
<2>当这个唯一的实例应该是通过子类化可以拓展的,并且客户应该无需更改代码就能使用一个拓展的实例时.

4.对象结构图


5.实现
   Singeton模式使得这个唯一的实例是类的一般实例,但该类被写成只有一个实例能被创建.做到这一点的一个常用方法就是
将创建这个类的实例操作隐藏在一个类操作中(也就是一个静态成员函数或者是一个类方法).由它保证只有一个实例被创建.
这个静态成员函数可以访问一个保存唯一实例的变量,而且它还可以保证这个变量在返回值之前用这个唯一的实例初始化.
同时还要将构造函数私有化,限制对象的创建只能在该类中进行(给构造函数添加private访问权限的后果).

C++ code:
class文件
  1. class Singleton  
  2. {
  3. private:
  4.     static Singleton * _Instance;
  5.         Singleton();
  6. public:
  7.         static Singleton * Instance();
  8.         virtual ~Singleton();

  9. };
复制代码
实现文件
  1. Singleton * Singleton::_Instance = 0;
  2. Singleton::Singleton()
  3. {

  4. }

  5. Singleton::~Singleton()
  6. {

  7. }

  8. Singleton * Singleton::Instance()
  9. {
  10.         if (_Instance == 0)
  11.         {
  12.                 _Instance = new Singleton;
  13.         }
  14.         return _Instance;
  15. }
复制代码
这样就实现了最简单的Singleton模式.

已知应用
metaclass(元类)
一个元类是一个类的类,而且每个元类有一个实例,元类没有名字,但是他们记录了它们的唯一实例并且通常不会再创建其他实例.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值