C++的就直接上代码吧,UML图什么地,就参见java的单例模式博客吧
类声明头文件
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include <iostream>
using namespace std;
class Singleton {
public:
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* _instance;
};
#endif
类定义文件
#include "Singleton.h"
#include <iostream>
using namespace std;
Singleton* Singleton::_instance = 0;
Singleton::Singleton() {
cout<<"Singleton...."<<endl;
}
Singleton* Singleton::Instance() {
if (_instance == 0) {
_instance = new Singleton();
}
return _instance;
}
测试代码:
#include "Singleton.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[]) {
Singleton* sgn = Singleton::Instance();
return 0;
}
说明:
Singleton 模式的实现无须补充解释,需要说明的是,Singleton 不可以被实例化,因此,我们将其构造函数声明为 protected 或者直接声明为 private。