单例模式的实现(饿汉式和懒汉式)

Posted 爱简单的Paul

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式的实现(饿汉式和懒汉式)相关的知识,希望对你有一定的参考价值。

1.懒汉模式。

class Singleton  
{  
private:  
    static Singleton* m_instance;  
    Singleton(){}  
public:  
    static Singleton* getInstance();  
};  
  
Singleton* Singleton::getInstance()  
{  
    if(NULL == m_instance)  
    {  
        Lock();//借用其它类来实现,如boost  
        if(NULL == m_instance)  
        {  
            m_instance = new Singleton;  
        }  
        UnLock();  
    }  
    return m_instance;  
}  

2. 饿汉式:

class singleton
{
protected:
    singleton()
    {}
private:
    static singleton* p;
public:
    static singleton* initance();
};
singleton* singleton::p = new singleton;
singleton* singleton::initance()
{
    return p;
}

饿汉式是线程安全的。

以上是关于单例模式的实现(饿汉式和懒汉式)的主要内容,如果未能解决你的问题,请参考以下文章

单例设计模式中的懒汉式和饿汉式

单例设计模式懒汉式和恶汉式

只会懒汉式和饿汉式 你还不懂单例模式!

关于Java单例模式中懒汉式和饿汉式的两种类创建方法

JAVA中的单例设计模式-分为懒汉式和饿汉式(附代码演示)

JAVA中的单例设计模式-分为懒汉式和饿汉式(附代码演示)