April 14 2010

Singletons in Java mit dem Holder-Pattern

2  ​kommentare

Das Singleton-Pattern ist eines der bekanntesten Entwurfsmuster. Es wird verwendet, wenn nur eine Instanz einer Klasse existieren darf. Ein klassisches Anwendungsbeispiel ist das Schreiben von Logfiles in eine zentrale Datei. Auf Wikipedia kann man Haufenweise Nachteile des Singleton-Patterns nachlesen. Aller Kritik zum Trotz hat dieses Pattern für bestimmte Anwendungsfälle seine Berechtigung.

Ein Singleton in Java sollte mit dem Holderpattern implementiert werden. Es initalisiert den Singleton so spät wie möglich, nämlich bei der ersten Verwendung.

Die Initalisierungsphase einer Klasse ist durch die Java Language Specification (Kapitel 12.4) garantiert nicht nebenläufig.

Weil die statische Variable INSTANCE in einer seriellen Operation geschrieben wird ist keine Synchronisation von getInstance() mehr notwendig ist. Damit ist der Singleton implizit Threadsafe.

Das Pattern wurde von William Pugh im Rahmen seiner arbeiten zum Java Memory Model entwickelt. Eine gute Erklärung ist in der englischen Wikipedia unter dem “offiziellen” Namen initialization on demand holder idiom zu finden.

public class Singleton
{
    /**
     * Privater Konstruktor verhindert externe Instanzierung
     */
    private Singleton()
    {
    }

    /**
     * Innere statische Holder-Klasse
     */
    private static class Holder
    {
        private static final Singleton INSTANCE = new Singleton();

            private Holder()
            {
            }
    }

    /**
     * Statische Factory-Methode
     */
    public static Singleton getInstance()
    {
        return Holder.INSTANCE;
    }
}

Danke an André Janus für die hilfreichen Kommentare.

Veröffentlicht in Softwareentwicklung am 14. April 2010

​Über mich

Jens Jäger

Hey, ich bin Jens. Als Experte für Digitalisierung und digitale Transformation habe ich es mir zur Aufgabe gemacht, Dir zu zeigen, wie Du zum Gewinner der digitalen Transformation wirst - mit kostenlosen Tipps und Know How.

Das könnte dich auch interessieren

Online-Marketing Trends 2020

WordPress Sicherheit – Eine Anleitung

Besucherstatistik für WordPress ohne Cookie-Banner

Schreibe einen Kommentar

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


Dein Kommentar *

{"email":"E-Mail Adresse ungültig","url":"Website address invalid","required":"Das Feld wird benötigt"}

Java Lexikon für Recruiter