最近重新拾起来了C++ GUI编程,发现C++很多语法都已经遗忘干净了。。。。这里笔记下一种最为简单的单例模式。
注意:
这种单例模式其实有风险,在多个单例同时进行初始化的时候会有问题,因此这里采取业务串行化方式来规避,即在程序初始化的时候显式初始化单例。
/* Singleton_Demo.h */ class Singleton_Demo { public: static Singleton_Demo& getInstance(void); void init(void); //简单单例实现 private: Singleton_Demo(); Singleton_Demo(Singleton_Demo const&); Singleton_Demo& operator=(Singleton_Demo const&); ~Singleton_Demo(); }; /* Singleton_Demo.c */ Singleton_Demo &Singleton_Demo::getInstance() { static Singleton_Demo the_instance; return the_instance; } void Singleton_Demo::init() { //do nth } Singleton_Demo::Singleton_Demo() { //param init }
业务初始化:
#include "Singleton_Demo.h" int main(int argc, char *argv[]) { //...... Singleton_Demo::getInstance().init(); //...... }
发表评论