软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍单例模式的实现。
单例的一般实现比较简单,下面是代码和UML图。由于构造函数是私有的,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance。
UML图:
代码:
#include <iostream>
using namespace std;
template <typename T>
class Singleton
{
public:
static T* GetInstance()
{
if(t_ == NULL)
t_ = new T();
return t_;
}
private:
Singleton();
static T* t_;
};
template <typename T>
T* Singleton<T>::t_ = NULL;
class Stu
{
public:
void print()
{
cout<<"this is Stu"<<endl;
}
};
int main(void)
{
Stu *s = Singleton<Stu>::GetInstance();
Stu *s2 = Singleton<Stu>::GetInstance();
if( s == s2)
{
cout<<"equals."<<endl;
}
return 0;
}