设计模式之单例模式,懒汉模式与饿汉模式

来源:互联网 发布:百度读书软件 编辑:程序博客网 时间:2024/05/12 08:24

设计模式之单例模式,懒汉模式与饿汉模式

  单例模式是一种常用的软件设计模式,它保证在软件运行过程中对象在内存中只存在一份实例,单例模式通常有懒汉模式与饿汉模式。

1.懒汉模式

懒汉模式是在第一次调用的时候才创建实例,但是在多线程的环境下很可能创建多个实例,因此是线程不安全的。

C++代码:

class Singleton{    protected:        Singleton(){}        Singleton(const Singleton& singleton)(){}    private:        static Singleton* p;    public:        static Singleton* instance();}Singleton* Singleton::p = NULL;Singleton* Singleton::instance(){    if(NULL == p)    {        //多线程不安全进入        p = new Singleton();    }    return p;}

这里切记除了给类添加一个保护的构造函数外,还需添加一个保护的拷贝构造函数,不然编译器会给我们添加一个public访问标志的构造函数,这时我们按照下面这样可以生成多个实例:

Singleton* singleton = Singleton::instance();//调用编译器提供的默认构造函数Singleton singleton1 = *singleton;Singleton singleton2 = *singleton;

2.饿汉模式

饿汉模式是在程序加载的时候就已经创建了一个实例,不存在多线程环境下创建多实例的问题,因此是线程安全的。

C++代码:

class Singleton{    protected:        Singleton(){}        Singleton(const Singleton& singleton)(){}    private:        static Singleton* p;    public:        static Singleton* instance();}Singleton* Singleton::p = new Singleton();Singleton* Singleton::instance(){    return p;}

原文地址:
http://www.uptoday.net/articles/2017/12/16/1513423966809.html#b3_solo_h4_2

阅读全文
0 0
原创粉丝点击