单例模式是一种罕用的软件设计模式。在它的外围构造中只蕴含一个被称为单例的非凡类。通过单例模式能够保证系统中一个类只有一个实例而且该实例易于外界拜访,从而不便对实例个数的管制并节约系统资源。如果心愿在零碎中某个类的对象只能存在一个,单例模式是最好的解决方案。
Singleton(单例):在单例类的外部实现只生成一个实例,同时它提供一个动态 getInstance() 工厂办法,让客户能够拜访它的惟一实例;为了避免在内部对其实例化,将其默认构造函数和拷贝构造函数设计为公有;在单例类外部定义了一个 Singleton 类型的动态对象,作为内部共享的惟一实例。
用单例模式,模仿公司员工应用打印机场景,打印机能够打印员工要输入的内容,并且能够累积打印机应用次数。
class Printer{
public:
static Printer* getInstance(){ return pPrinter;}
void PrintText(string text){
cout << "打印内容:" << text << endl;
cout << "已打印次数:" << mTimes << endl;
cout << "--------------" << endl;
mTimes++;
}
private:
Printer(){ mTimes = 0;}
Printer(const Printer&){}
private:
static Printer* pPrinter;
int mTimes;
};
Printer* Printer::pPrinter = new Printer;
void test(){Printer* printer = Printer::getInstance();
printer->PrintText("到职报告!");
printer->PrintText("入职合同!");
printer->PrintText("提交代码!");
}