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 Jens Jäger.

Meine Mission ist es, den Unternehmens-Impact, meiner Kunden durch agile Softwareprojekte zu steigern:

  • Digitale Transformation ankurbeln.
  • Routineaufgaben automatisieren.
  • Freiraum für Innovation schaffen.

Das könnte dich auch interessieren

Du kannst aus B-Playern keine A-Player machen

Du kannst aus B-Playern keine A-Player machen. Du kannst dich als Chef nur von ihnen trennen. Mit etwas Geduld kann jeder zum A-Player werden (unter den richtigen Bedingungen)  In der Theorie stimmt das. ✅ In der Praxis leider nicht. ❌ Daran ändern auch Weiterbildungsmöglichkeiten, flexible Arbeitszeiten und ein modernes Arbeitsumfeld nichts. Ich kann mich als Arbeitgeber auf den Kopf stellen, aber: Persönliches

Read More

Prozesse automatisieren oder jemanden einstellen?

Prozesse automatisieren oder jemanden einstellen? Die definitive Antwort:  Gibt es nicht. Es kommt ganz auf dein Unternehmen an.  Meiner Erfahrung nach geht es darum, die richtige Mischung zu finden: 👫 Neue Mitarbeiter unterstützen dich sofort, aber sind nicht endlos skalierbar. 🤖 Prozessautomatisierung ist skalierbar, aber muss betreut werden.  Für repetitive Aufgaben kannst du 5 neue Mitarbeiter einstellen, um sie

Read More

Ich bleibe als Chef immer nah am Tagesgeschäft.

Ich bleibe als Chef immer nah am Tagesgeschäft.  Darum arbeite ich weiterhin auch „im“ Unternehmen:  Die meisten Business-Coaches predigen, dass du als Geschäftsführer nur „am“ und möglichst gar nicht mehr „im“ Betrieb arbeiten sollst. Für mich macht das wenig Sinn, denn:  1️⃣ Ich verstehe Kunden und Mitarbeiter durch mein Wirken Ohne tägliche Einblicke verliere ich zu beiden

Read More

Du möchtest mit mir zusammenarbeiten? 

Werde ein Teil unseres Teams: