Aufzählungen als Singletons in Java: Eine detaillierte Untersuchung
In der Programmiersprache Java bietet die Verwendung einer Aufzählung als Singleton eine bequeme Möglichkeit, sicherzustellen, dass nur eine Instanz von eine Klasse existiert. Es können jedoch unterschiedliche Ansätze verwendet werden, um dieses Singleton-Muster mit Aufzählungen zu implementieren, was zu geringfügigen Abweichungen in der Funktionalität und Verwendung führt.
Methode 1: Verwendung einer Aufzählungsinstanz mit privatem Konstruktor
<code class="java">public enum Elvis {
INSTANCE;
private int age;
public int getAge() {
return age;
}
}</code>
In Bei diesem Ansatz wird das INSTANCE-Feld erstellt, das effektiv eine Singleton-Instanz der Elvis-Enumeration definiert. Der private Konstruktor schränkt die Instanziierung außerhalb der Enum-Definition ein. Um auf die Instanz zuzugreifen, würde man Elvis.INSTANCE.getAge() verwenden.
Methode 2: Verwendung einer öffentlichen statischen Methode
<code class="java">public enum Elvis {
INSTANCE;
private int age;
public static int getAge() {
return INSTANCE.age;
}
}</code>
Hier ist das INSTANCE-Feld wie zuvor privat. Anstatt jedoch einen Getter für die Enum-Instanz verfügbar zu machen, wird eine öffentliche statische Methode getAge() bereitgestellt. Der Aufruf von Elvis.getAge() ruft die Alterseigenschaft der Enum-Instanz ab.
Vorteile und Nachteile
Methode 1:
-
Vorteile: Bietet sofortigen Zugriff auf die Singleton-Instanz, da diese immer als Elvis.INSTANCE verfügbar ist.
-
Nachteile: Der private Konstruktor kann es schwierig machen, die Elvis-Klasse als zu übergeben ein Parameter, da er möglicherweise nicht als Klasse mit öffentlichen Konstruktoren erkannt wird.
Methode 2:
-
Vorteile: Bietet Flexibilität durch die Möglichkeit statischer Methodenaufrufe, was die Bindung an externe Komponenten erleichtert und die Einschränkungen der Übergabe einer Enum-Instanz vermeidet.
-
Nachteile: Etwas ausführlicher als Methode 1, da es erfordert eine öffentliche statische Methode anstelle von 🎜>
Wenn ein direkter Verweis auf die Singleton-Instanz erforderlich ist und diese an externe Komponenten gebunden wird, die eine Instanz erwarten, ist
Methode 1
möglicherweise besser geeignet.
Wenn statische Methodenaufrufe ausreichen und die Bereitstellung von Flexibilität für die Bindung Priorität hat, bietet
Methode 2- eine bequemere Option.
Im Allgemeinen sollten Sie die Verwendung statischer Methoden in Betracht ziehen, wenn die Funktionalität eigenständig ist und erfordert keine explizite Instanz der Enum-Klasse. Für Situationen, in denen die Eigenschaften einer Instanz wesentlich sind und ein direkter Zugriff erforderlich ist, kann der erste Ansatz angemessener sein.-
Das obige ist der detaillierte Inhalt vonAufzählungen als Singletons in Java: Welche Implementierung ist für Sie am besten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn