单例模式 Singleton

单例模式是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
主要用于解决一个全局使用的类频繁地创建与销毁。

关键代码是构造函数是私有的。应用实例是一个班级只有一个班主任。声明一个对象时,编译器为调用构造函数,而这个调用将通常是外部的,不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导致编译出错。

#include 

class singleton
{
public:
    static singleton * getInstance() {
        if (NULL == instance) {
            instance = new singleton();
        }
        return instance;
    }
    
    void showMessage() {
        printf("Hello World!\n");
    }

private:
    singleton() {} //构造函数为 private,这样该类就不会被实例化
    static singleton *instance;
};

singleton * singleton::instance = NULL; //单例对象指针初始化空

int main(void)
{
    singleton::getInstance()->showMessage();
    return 0;
}

你可能感兴趣的:(设计模式,单例模式)