编程序的时候很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。
最简单的方法是用个全局变量或者用个静态变量。但这违反基本的object oriented design 的原则,使程序执行的整体结构,可读性以及可维护大大下降。同时如果所编写的程序不是主程序而是dll的话全局变量的寿命更难控制。
design pattern 中最简单也是应用最广的就是singleton, 就是用于解决这个问题的。下面是一个简单的singleton的c++的实现,应用这个class之后可以保证当前程序中只有一个copy 。
class singleton { public: static singleton * getinstance() { return &instance; } protected: singleton(); singleton(); } |
由于constructor和destructor都是protected,所以无法直接生成这个class。使用时直接用 singleton::getinsgtance()就行了。不必操心singleton的寿命。