Definición:
Nos Asegura que una clase solo posee una intancia y provee un unico punto acceder a dicha instancia

Participantes:

Singleton: define una metodo para que los clientes puedan acceder a una unica intancia de la calse, ademas se encarga de crear y mantener a dicha unica instancia.

En algunos casos es importante que algunas clases tengan solo una instancia, por ejemplo pueden haber muchas impresoras en un sistema pero una sola cola de impresión , en este sentido tener una variable global a nivel de todo el sistema parece una solución pero esto no te garantiza que no se pueda realizar mas instancias de una clase en concreto.

El patrón singleton no proveer de una clase que administra su única instancia e impide que se realicen nuevas instancias y maneja la accesibilidad de la instancia única.

Para logar esto generalmente se oculta el constructor de la clase de manera que no sea accesible por nadie, luego se puede implementar un método estático desde al que se pueda acceder a una variable que almacene la única instancia existente de la clase.

class Singleton

{

private static Singleton _instance;

// Constructor is ‘protected’

protected Singleton()

{

}

public static Singleton Instance()

{

// Uses lazy initialization.

// Note: this is not thread safe.

if (_instance == null)

{

_instance = new Singleton();

}

return _instance;

}

Aquí pueden descargar las clases en C# creadas con el Visual Studio 2008

Aquí pueden descargar el diagrama de clases realizado en el PowerDesigner