单例模式第一篇

        一、单例模式的特点
        1.1 为了保证不能创建实例,也不能让实例的个数增加,应该屏蔽掉创建实例的方法,即将构造函数私有化;
        1.2 将该实例在静态区static预先创建一个(保证要有一个实例);
        1.3 需要用一个成员变量指向这个实例,为了保证这个实例永远存在,且不被修改和删除,这个成员变量应该放在private里;
        1.4 虽然成员变量已经被保护起来,但依然需要被外界访问,读访问。
              这个成员变量是一个static,需要提供一个访问该变量的方法;
              由于此时还无法通过对象来调用此方法,所以此方法用static修饰,可以通过类名来直接访问。

        二、单例模式的案例
//single.cpp

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <string>
using namespace std;

class Printer
{
    
    
public:
	static Printer* getInstance(){
    
    
		return instance;
	}

	void log(string text){
    
    
		cout << "log: " << text<< endl;
	}

private:
	Printer(){
    
    }
	static Printer* instance;
};

Printer *Printer::instance = new Printer;


int main(void)
{
    
    
	Printer *p1 = Printer::getInstance();
	Printer *p2 = Printer::getInstance();

	p1->log("log1");
	p2->log("log2");

	if (p1 == p2)
	{
    
    
		cout << "p1 和p2是一个实例" << endl;
	}

	system("pause");

	return 0;
}

        效果如下:

图(1) Printer类只有一个实例

猜你喜欢

转载自blog.csdn.net/sanqima/article/details/105326164