Wzorzec bardzo prosty w kontrukcji i często stosowany. Gwarantuje korzystanie z jednej instancji globalnego obiektu w całej aplikacji. Dostęp do instancji klasy Singleton uzyskujemy za pomocą statycznej publicznej właściwości Instance. Dodany prywatny konstruktor uniemożliwia stworzenie obiektu. Słowo kluczowe sealed uniemożliwia dziedziczenie po klasie naszego singletona.
{code brush: c#}
public sealed class Singleton
{
private static Singleton theInstance = null;
private static readonly object padlock = new object();
private Singleton() {}
public static Singleton Instance
{
get
{
if (theInstance == null) {
lock (padlock)
{
if (theInstance == null)
theInstance = new Singleton();
}
}
return theInstance;
}
}
}
{/code}