Singleton (designmönster)

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

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.

Java

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;
  }
}

Media som används på denna webbplats

Question book-4.svg
Författare/Upphovsman: Tkgd2007, Licens: CC BY-SA 3.0
A new incarnation of Image:Question_book-3.svg, which was uploaded by user AzaToth. This file is available on the English version of Wikipedia under the filename en:Image:Question book-new.svg
Singleton UML class diagram.svg
UML class diagram for Singleton software design pattern.