Short Tip #05: Singleton pattern

Wzorzec Singleton jest chyba najprostszym ze stosowanych „nazwanych” wzorców. Jego koncepcja jest bardzo prosta: w cyklu działania aplikacji może być utworzona TYLKO JEDNA instancja danego obiektu i powinna być ona dostępna z każdego miejsca w kodzie.

W implementacji klasy (przykładowa implementacja poniżej) są ważne następujące elementy:

  • prywatna, statyczna instancja klasy singletona
  • konstruktor, który jest albo private albo protected – uniemożliwia to utworzenie instancji klasy z zewnątrz
  • publiczna właściwość udostępniająca instancję i konstruująca ją przed pierwszym użyciem
class Singleton
{
    /// <summary>
    /// Instance of the Singleton class
    /// </summary>
    private static Singleton instance;

    /// <summary>
    /// Constructor
    /// </summary>
    protected Singleton() { }

    /// <summary>
    /// Property returning the instance, initializing it before first use attempt
    /// </summary>
    public static Singleton Instance
    {
        get
        {
            if (instance == null)
                instance = new Singleton();
            return instance;
        }
    }
}

Tylko tyle i aż tyle. W codziennym programowaniu Singletonami są najczęściej wszelkiego rodzaju „-Managery”.

Be Sociable, Share!
czoper opublikowano dnia 2010-4-30 Kategoria: Programowanie | Tagi:, , ,

Odpowiedzi: 2 Zostaw komentarz

  1. #2czoper @ 2010-4-30 18:23

    faktycznie, zapomniałem dopisać, że przedstawiony jest kod dla aplikacji jednowątkowej, dzięki za uściślenie.

  2. #1Gutek @ 2010-4-30 17:06

    rozwiazanie rozsypie sie przy wielowatkowosci.

    dobrym pomyslem na prosty singleton to:

    class Singleton
    {
    private static readonly Singleton _instance = new Singleton();

    public static Singleton Instnace { get { return _instance } };
    }

    zreszta ms jus o tym pisal tutaj: http://msdn.microsoft.com/en-us/library/ms998558.aspx

    troche pozno to opisal ale zawsze dobrze wiedziec ze opisal.

Zostaw odpowiedź

(Ctrl + Enter)