您的位置:首页 > 其它

设计模式——实现单例模式

2015-08-10 20:51 239 查看
单例模式是最简单的设计模式,没有之一,相信大家也都听说过。单例设计模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。

通过单例模式你可以:

一、确保一个类只有一个实例被建立

二、提供了一个对对象的全局访问指针

经典的单例模式有两种,懒汉式、饿汉式。

懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉嘛,很懒的,配置文件的实例直到用到的时候才会加载。。。。。。

饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例,所以每次用到的之后直接返回就好了。

下面我们就来自己设计一个单例模式的类:

class Singleton//懒汉模式
{
private:
Singleton(){}
public:
static Singleton* p;
static Singleton* getInstance();
};

Singleton* Singleton::p=NULL;

Singleton* Singleton::getInstance()
{
if(NULL==p)
{
if(mtx.try_lock())
{
p=new Singleton;
mtx.unlock();
}
}
return p;
}


class Singleton//饿汉模式
{
private:
Singleton(){}
public:
static Singleton* p;
static Singleton* getInstance()
{
return p;
}
};

Singleton* Singleton::p=new Singleton;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: