Debes entender bien el concepto de Singleton para que no te confundas, ahy 2 formas en mi punto de vista para hacer uso de esta técnica que es siempre tener 1 instancia de un objeto.
1- Clase que se instancie a ella misma una sola vez
Esta técnica se basa en poner el constructor como private y crear una Propiedad static de la misma clase dentro de ella:
using System;
public class Singleton
{
private static Singleton instance;
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
2- Clase que hace 1 sola instancias static de otras clases
Esta técnica se basa en anidar en una sola clase otras clases que son instanciadas una sola vez y pueden ser accesadas desde cualquier punto de un programa.
using System;
public class Global
{
private static DataBaseClass instance;
public static DataBaseClass DataBase
{
get
{
if (instance == null)
{
instance = new DataBaseClass();
}
return instance;
}
}
}
De esta forma desde cualquier parte se usaría: Global.DataBase.Execute(query) ó cualquier método que tengan definido en la clase DataBase.
Dejo más referencia aquí:
http://es.wikipedia.org/wiki/Singleton
Saludos,