标签:ati bsp tool man 资源 其他 任务管理器 bin nbsp
单例模式单例模式也叫单件模式,在单例模式中,构造函数应该在private中,限制只能在类内创建对象。
1. 单例类保证全局只有一个唯一实例对象。
2. 单例类提供获取这个唯一实例的接口。
实现单例模式的思路:一个类能返回对象一个引用(永远是一个)和一个获得该实例的方法(必须是静态方法),构造函数为私有的,其它初的代码就无法通过类的构造函数来实例化类的对象,只能通过类提供的静态方法获得类的唯一实例。
下面是一个简单的单例类:
不考虑线程安全的一个单例类
class Singleton
{
public:
// 获取唯一对象实例的接口函数
static Singleton* GetInstance()
{
if (_sInstance ==NULL)
{
_sInstance = new Singleton();
}
return _sInstance;
}
// 删除实例对象
staticvoid DelInstance()
{
if (_sInstance)
{
delete _sInstance;
_sInstance =NULL;
}
}
void Print()
{
cout<<_data<<endl;
}
private:
// 构造函数定义为私有,限制只能在类内创建对象
Singleton()
:_data(0)
{}
Singleton(const Singleton&);
Singleton&operator=(const Singleton&);
// 指向实例的指针定义为静态私有,这样定义静态成员函数获取对象实例
static Singleton*_sInstance;
// 单例类里面的数据
int _data;
};
Singleton* Singleton::_sInstance =NULL;
void TestSingleton()
{
Singleton::GetInstance()->Print();
Singleton::DelInstance();
}优点:1、在单例模式中,活动的单例只有一个实例,对单例类的所有实例化都得到相同的一个实例,防止其他对象对自己的实例化,确保所有对象都访问一个实例。
2、由于系统内存中只存放一个对象,因此可以节约系统资源,当需要频繁创建和销毁对象时,单例模式可以提供系统性能。
3、避免对共享资源的多重占用。
缺点:1、不适用与多变的对象,如果同一类型的对象总是在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。
2、由于单例模式没有抽象层,因此单例类的扩展有很大困难。
3、如果实例化的对象长时间不能被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
单例模式的使用场景:
1、资源共享的境况下,避免由于资源操作时导致的性能或损耗等。
2、控制资源的情况下,方便资源之间的互相通信。
应用场景举例:
打印机;Windows的TaskMangage(任务管理器);Windows的RecycleBin(回收站);网站的计数器;
标签:ati bsp tool man 资源 其他 任务管理器 bin nbsp
原文地址:http://blog.51cto.com/12951882/2061343