单件模式的实现很简单,基本上没什么好说,就说几点:
为什么要单件模式?
因为程序中很多对象只能有一个,如日志文件,打印机等,如果出现多个就麻烦了。
为什么不用全局变量?
的确用全局变量可以实现只有一个对象,但是全局变量必须在程序启动的时候就初始化,万一我们的对象很耗资源,但又不一定用到的话,全局变量就不合适了。另外在多线程的情况还可以把互斥等处理细节封装在里面。
实现的时候的几个注意点
1)构造函数,拷贝构造函数,=运算符都要声明为私有,这样才能保证只有一个对象
2)GetInstance()函数必须声明为static,因为我们的构造函数都是私有的,而要调用一般的方法只有先得到对象,就绕进了鸡生蛋还是蛋生鸡的情况了,所以必须定义为static。