设计模式设计模式 BY C++程序员

【C++ 设计模式】3.单例模式

2019-10-13  本文已影响0人  JeremyYv


以下是单例模式的简易代码实现:
// Singleton.hpp
#include <iostream>
using namespace std;

// 日志单件类
class LogSingleton {
public:
    // 对外提供获取唯一实例的接口
    static LogSingleton* Instance() {
        if (NULL == m_pInstance) {
            // 只第一次调用此接口时创建实例化对象
            m_pInstance = new LogSingleton();
        }
        return m_pInstance;
    }

    // 展示当前日志
    void Look() {
        printf("%s\n", strLog.c_str());
    }

    // 写入日志
    void Write(string strNew) {
        strLog += strNew;
    }
    
    // 内存回收
    ~LogSingleton() {
        if (NULL != m_pInstance) {
            delete m_pInstance;
            m_pInstance = NULL;
        }
    }

private:
    // 将构造、拷贝构造函数设为私有
    LogSingleton() {}
    LogSingleton(LogSingleton& oLog) {}

    static LogSingleton* m_pInstance; // 指向唯一实例的指针
    string strLog;
};

// 记得将static指针初始化
LogSingleton* LogSingleton::m_pInstance = NULL;
主函数中的使用
#include "Singleton.hpp"
int main()
{
    LogSingleton* pUserA = LogSingleton::Instance();
    pUserA->Write("Hello");

    LogSingleton* pUserB = LogSingleton::Instance();
    pUserB->Look();
    return 0;
}
控制台输出结果
Hello

上一篇下一篇

猜你喜欢

热点阅读