Fork me on GitHub

单例模式(补充)

     单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 如果有很多地方需要使用到单例模式,则可以改用宏来简化实现单例模式的编码工作。需要注意的是:该方案为非线程安全!

在使用单例的头文件中先声明:DECLARE_SINGLETON(classA)

然后在cpp文件中添加宏:IMPLEMENT_SINGLETON(classA)

外部调用方法:classA::Instance() 

/*
 * singleton.h
 *
 *  Created on: May 28, 2015
 *      Author: yanghui
 */

#ifndef SINGLETON_H_
#define SINGLETON_H_


#define DECLARE_SINGLETON(ClassName) \
    private: \
        static ClassName *singleton_; \
    public: \
        static ClassName *GetInstance(); \
        static void ReleaseInstance();

#define IMPLEMENT_SINGLETON(ClassName) \
    ClassName *ClassName::singleton_ = NULL; \
    ClassName *ClassName::GetInstance() { \
        if (singleton_ == NULL) { \
            singleton_ = new ClassName(); \
        } \
        return singleton_; \
    } \
    void ClassName::ReleaseInstance() { \
        if (singleton_ != NULL) { \
            delete singleton_; \
            singleton_ = NULL; \
        } \
    }

#endif /* SINGLETON_H_ */

 

posted @ 2016-09-09 14:15  ranjiewen  阅读(384)  评论(0编辑  收藏  举报