单例模式
保证一个类仅有一个实例,并且提供一个访问它的全局访问点.
2.使用动机
保证一个类只能有一个实例,也就是你无法通过new操作符不受限制的生成对象实例.
3.适用范围
<1>当类只能有一个实例,而且客户可以从一个众所周知的访问点访问它时.
<2>当这个唯一的实例应该是通过子类化可以拓展的,并且客户应该无需更改代码就能使用一个拓展的实例时.
4.对象结构图
Singeton模式使得这个唯一的实例是类的一般实例,但该类被写成只有一个实例能被创建.做到这一点的一个常用方法就是
将创建这个类的实例操作隐藏在一个类操作中(也就是一个静态成员函数或者是一个类方法).由它保证只有一个实例被创建.
这个静态成员函数可以访问一个保存唯一实例的变量,而且它还可以保证这个变量在返回值之前用这个唯一的实例初始化.
同时还要将构造函数私有化,限制对象的创建只能在该类中进行(给构造函数添加private访问权限的后果).
C++ code:
class文件 实现文件 这样就实现了最简单的Singleton模式.
已知应用
metaclass(元类)
一个元类是一个类的类,而且每个元类有一个实例,元类没有名字,但是他们记录了它们的唯一实例并且通常不会再创建其他实例.