Hoppa till innehållet

Singleton (designmönster)

Från Wikipedia
UML-diagram av en singletonklass

Singleton är ett designmönster inom datavetenskap som innebär att man begränsar antalet instanser av en klass till ett objekt.

Exempel på implementation

[redigera | redigera wikitext]

Singleton implementeras genom att man skapar en klass med en metod som skapar en instans om det inte redan finns en. Om det finns en instans av klassen, returnerar metoden en referens av det objektet. För att förhindra skapandet av flera instanser görs konstruktorn privat (private) eller skyddad (protected).

Idén med en singletonklass är alltså att det i programmet bara kommer att finnas en och endast en instans av klassen och att den som använder klassen inte behöver veta när den skapas. Singletonklassen skapas första gången någon ber om en referens till klassen.

public class Singleton {
  // Privat konstruktor som förhindrar att det skapas en publik automatiskt
  private Singleton() {}

  private static class SingletonHolder {
    private static Singleton instance = new Singleton();
  } 

  public static Singleton getInstance() {
    return SingletonHolder.instance;
  }
}