Haftpflicht Blogger
Virtual Server von Host Europe

Design Patterns – Singleton

| 13. Oktober 2014 | Keine Kommentare

Singleton

Definition

A singleton is simply a class that is instantiated exactly once [4].

Implementierung

Kernpunkte bei der Implementierung ist die Verwendung

  • einer statischen Klassenvariablen zur Aufnahme der Klasseninstanz
  • einem private Konstruktor und
  • einer public static final Methode zum Holen der Objektinstanz.

Es gibt zwei Implementierungsvarianten für Singletons

  • Eager Loading
  • Lazy Loading

 

Variante Lazy Loading

Bei der Lazy Loading Impementierungsvariante für das Singleton, wird das Singleton erst erstellt, wenn es zum ersten Mal benötigt wird.

Vorteil:

  • Bis zum ersten Aufruf des Singletons können ggf. notwendige, erforderliche Werte vorliegen.
  • Keine (möglicherweise) unnötige Klassenerzeugung.

Nachteil:

  • Nicht 100% threadsafe, es kann rein theoretisch zur Erstellung zweier Singletons kommen.  Eine Synchronisation wäre notwendig, dies geht aber zu Lasten der Performance.

Variante Eager Loading

Bei der EagerLoading Impementierungsvariante für das Singleton, wird das Singleton erst erstellt, wenn es zum ersten Mal benötigt wird.

Vorteile:

  • Threadsicherheit
  • Performance

Nachteile:

  • ggf. sind zum Erzeugungszeitpunkt noch nicht alle erforderliche Daten vorhanden

 

Variante Enum

Joshua Bloch beschreibt in seinem Buch „Effective Java“ [3] noch eine dritte Variante. Seit Einführung der Enums mit Java Version 1.5 kann man die Singularität der Klasse auch über das Konstrukt eines Ein-Element-Enums realisieren.

Aufruf/Zugriff auf die Enum-Methoden

Vorteile:

  • Threadsicherheit
  • Performance
  • autom. Serializierung

Nachteile:

  • ungewöhnlicher, noch nicht verbreitete Implementierungsmethode für ein Singleton

Meine Präferenz:

Wann immer möglich die Eager-Loading Variante implementieren, da in der Regel die Anwendungsperformance wichtiger ist als die Kosten für mehr Hauptspeicher oder die neue Enum-Variante ausprobieren.

Siehe auch:

[1]  Wikipedia: Singleton (Entwurfsmuster)

[2]  Phillip Hauer: Design Pattern Studienprojekt

[3]  Joshua Bloch: Effective Java, Second Edition, Addison-Wesley, Seite 18, (Buch bei Amazon)

[4]  Design Patterns: Elements of Reusable Object-Oriented Software, Adison-Wesley, Seite 127, (Buch bei Amazon)

Anzeige
E-Shops von Host Europe

Stichworte: , , ,

Kategorie: Java

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.