Difference between revisions of "Singleton"

From CDOT Wiki
Jump to: navigation, search
(Sample Code)
Line 12: Line 12:
  
 
==Sample Code==
 
==Sample Code==
 +
<pre>
 
class Singleton
 
class Singleton
 
{
 
{
Line 32: Line 33:
 
   }
 
   }
 
}
 
}
 +
</pre>

Revision as of 18:17, 8 March 2007

Introduction

Singleton pattern Ensure a class only has one instance, and provide a global point of access to it. This is useful when exactly one object is needed to coordinate actions across the system.

Implementation

  • Singleton pattern is implemented by creating a class with a method that creates a new instance of the object if one does not exist.
  • If an instance already exists, it simply returns a reference to that object.
  • To make sure that the object cannot be instantiated any other way, the constructor is made either private or protected.

UML Diagram

Singleton UML.png

Sample Code

class Singleton
{
  private static Singleton instance;

  // Note: Constructor is 'protected' 
  protected Singleton() 
  {
  }

  public static Singleton Instance()
  {
    // Use 'Lazy initialization' 
    if (instance == null)
    {
      instance = new Singleton();
    }

    return instance;
  }
}