好友
阅读权限20
听众
最后登录1970-1-1
|
单例模式
1.作用:
保证一个类仅有一个实例,并且提供一个访问它的全局访问点.
2.使用动机
保证一个类只能有一个实例,也就是你无法通过new操作符不受限制的生成对象实例.
3.适用范围
<1>当类只能有一个实例,而且客户可以从一个众所周知的访问点访问它时.
<2>当这个唯一的实例应该是通过子类化可以拓展的,并且客户应该无需更改代码就能使用一个拓展的实例时.
4.对象结构图
5.实现
Singeton模式使得这个唯一的实例是类的一般实例,但该类被写成只有一个实例能被创建.做到这一点的一个常用方法就是
将创建这个类的实例操作隐藏在一个类操作中(也就是一个静态成员函数或者是一个类方法).由它保证只有一个实例被创建.
这个静态成员函数可以访问一个保存唯一实例的变量,而且它还可以保证这个变量在返回值之前用这个唯一的实例初始化.
同时还要将构造函数私有化,限制对象的创建只能在该类中进行(给构造函数添加private访问权限的后果).
C++ code:
class文件class Singleton
{
private:
static Singleton * _Instance;
Singleton();
public:
static Singleton * Instance();
virtual ~Singleton();
};
实现文件Singleton * Singleton::_Instance = 0;
Singleton::Singleton()
{
}
Singleton::~Singleton()
{
}
Singleton * Singleton::Instance()
{
if (_Instance == 0)
{
_Instance = new Singleton;
}
return _Instance;
}
这样就实现了最简单的Singleton模式.
已知应用
metaclass(元类)
一个元类是一个类的类,而且每个元类有一个实例,元类没有名字,但是他们记录了它们的唯一实例并且通常不会再创建其他实例.
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|