Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.10.4

Kapselung von Konstruktoren


Es gibt Fälle, in denen man verhindern möchte, dass Benutzer einer Klasse Exemplare direkt über die Konstruktoren erzeugen. Die beiden folgenden Fälle sind die wohl wichtigsten und auch oft in der Standardbibliothek zu finden: Um die direkte Erzeugung von Exemplaren zu verhindern, darf kein Konstruktor von »außen« zugreifbar sein, auch der implizite Konstruktor nicht. Es genügt also nicht, einfach in der Klasse keine Konstruktoren vorzusehen, da der implizite Konstruktor dann immer noch verfügbar ist. Um diesen gewissermaßen zu verstecken, muss er mit der Zugriffsklasse private überschrieben werden:
  private MyClass() {}
Wenn dies der einzige Konstruktor der Klasse MyClass ist, können von außerhalb der Klasse keine Exemplare mehr erzeugt werden. Wie das Beispiel zeigt, ist es nicht unüblich, dass der Konstruktor in diesem Fall einen leeren Rumpf hat. Insbesondere im ersten der beiden oben genannten Fälle macht dies Sinn, weil die gesamte Funktionalität in statischen Methoden enthalten ist.

Im zweiten Anwendungsfall mag es dagegen angebracht sein, Initialisierungsaktionen im privaten Konstruktor für das Singleton zu implementieren. Das gesamte Singleton-Muster hat folgende Struktur:
  public class SingletonDemo {
  
    private static SingletonDemo singleton;
  
    // Der leere Konstruktor
    private SingletonDemo() {}
  
    // Liefert das Singleton-Exemplar zurück
    public static SingletonDemo getInstance() {
      // Nur beim ersten Aufruf der Methode
      // ein neues Exemplar erzeugen
      if (singleton == null)
        singleton = new SingletonDemo();
  
      return singleton;
    }
  
  }


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.