CSC/ECE 517 Fall 2010/ch3 3f DF
The Singleton pattern in static and dynamic languages
Introduction
Text overview
UML Diagram
Static Language Implementation
C++
class MySingleton
{
public:
static MySingleton* Instance()
{
if(s_pSingletonObject == NULL)
s_pSingletonObject = new MySingleton;
return s_pSingletonObject;
}
static void Destroy()
{
if(s_pSingletonObject != NULL)
{
delete s_pSingletonObject;
s_pSingletonObject = NULL;
}
}
//Begin interface functions
//...
//End interface functions
private:
//Direct access to the constructor/destructor is prohibited
MySingleton() {}
virtual ~MySingleton() {}
static MySingleton* s_pSingletonObject;
};
MySingleton::s_pSingletonObject = NULL;
Dynamic Language Implementation
Ruby
Implementation
Singleton pattern source code
Usage
class MySingleton include Singleton # Begin interface methods # ... # End interface methods end
References
http://ruby-doc.org/stdlib/libdoc/singleton/rdoc/index.html http://en.wikipedia.org/wiki/Singleton_pattern