单例模式第一篇

        一、单例模式的特点
        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类只有一个实例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章