Es gibt keine solche Methode wie Class.getInstance()
. Sie verwechseln es wahrscheinlich mit new Class()
. Und ja, das macht genau dasselbe wie getInstance()
im Standard -Konstruktor. Hier ist ein Auszug aus seinem Javadoc :
Erstellt eine neue Instanz der Klasse, die von diesem %code% -Objekt repräsentiert wird. Die Klasse wird wie bei einem %code% -Ausdruck mit einer leeren Argumentliste instanziiert. Die Klasse wird initialisiert, wenn sie nicht bereits initialisiert wurde.
Im Code
%Vor%ist dasselbe wie
%Vor%Der %code% -Aufruf folgt tatsächlich dem Factory-Methode -Muster.
Update : Wenn ich die anderen Antworten sehe, wird mir klar, dass Ihre Frage etwas mehrdeutig ist. Nun, Orte, an denen eine Methode tatsächlich mit dem Namen %code% verwendet wurde, bezeichnet oft eine Abstrakte Fabrik Muster. Es wird "unter der Haube" %code% oder %code% verwenden, um die Instanz von Interesse zu erstellen und zurückzugeben. Es ist nur, um alle Details über die konkreten Implementierungen zu verbergen, die Sie möglicherweise nicht kennen müssen.
Außerdem sehen Sie diesen Methodennamen oft in einigen (meist selbst erstellten) Implementierungen des Singleton Muster.
Im Kontext einer abstrakten Klasse kann eine %code% -Methode das Fabrikmethodenmuster
Ja, dies wird oft im Singleton-Muster verwendet. Es wird verwendet, wenn Sie nur eine Instanz einer Klasse benötigen. Die Verwendung von getInstance () ist vorzuziehen, da Implementierungen dieser Methode möglicherweise eine aktive Instanz der Klasse überprüfen und sie zurückgeben, anstatt eine neue zu erstellen. Es kann etwas Speicher sparen. Wie in diesem Beispiel:
%Vor%Absolut (normalerweise) nicht.
%code% ist die statische Methode, die oft mit dem Singleton-Muster in Java verwendet wird. Das %code% Schlüsselwort erstellt tatsächlich ein neues Objekt. Irgendwann muss ein %code% vorhanden sein (obwohl es ein paar andere Methoden gibt, um neue Objekte zu instanziieren), um das Objekt zu erzeugen, das %code% zurückgibt.
Es gibt keine solche Methode wie Class#getInstance()
. Sie verwechseln es wahrscheinlich mit Class#newInstance()
. Und ja, das macht genau dasselbe wie new
im Standard -Konstruktor. Hier ist ein Auszug aus seinem Javadoc :
Erstellt eine neue Instanz der Klasse, die von diesem
Class
-Objekt repräsentiert wird. Die Klasse wird wie bei einemnew
-Ausdruck mit einer leeren Argumentliste instanziiert. Die Klasse wird initialisiert, wenn sie nicht bereits initialisiert wurde.
Im Code
%Vor%ist dasselbe wie
%Vor% Der Class#newInstance()
-Aufruf folgt tatsächlich dem Factory-Methode -Muster.
Update : Wenn ich die anderen Antworten sehe, wird mir klar, dass Ihre Frage etwas mehrdeutig ist. Nun, Orte, an denen eine Methode tatsächlich mit dem Namen getInstance()
verwendet wurde, bezeichnet oft eine Abstrakte Fabrik Muster. Es wird "unter der Haube" new
oder Class#newInstance()
verwenden, um die Instanz von Interesse zu erstellen und zurückzugeben. Es ist nur, um alle Details über die konkreten Implementierungen zu verbergen, die Sie möglicherweise nicht kennen müssen.
Außerdem sehen Sie diesen Methodennamen oft in einigen (meist selbst erstellten) Implementierungen des Singleton Muster.
Im Kontext einer abstrakten Klasse kann eine getInstance()
-Methode das Fabrikmethodenmuster Calendar
, die die statische Factory enthält Methoden und eine konkrete Unterklasse.
Absolut (normalerweise) nicht.
getInstance
ist die statische Methode, die oft mit dem Singleton-Muster in Java verwendet wird. Das new
Schlüsselwort erstellt tatsächlich ein neues Objekt. Irgendwann muss ein new
vorhanden sein (obwohl es ein paar andere Methoden gibt, um neue Objekte zu instanziieren), um das Objekt zu erzeugen, das getInstance
zurückgibt.
Ja, dies wird oft im Singleton-Muster verwendet. Es wird verwendet, wenn Sie nur eine Instanz einer Klasse benötigen. Die Verwendung von getInstance () ist vorzuziehen, da Implementierungen dieser Methode möglicherweise eine aktive Instanz der Klasse überprüfen und sie zurückgeben, anstatt eine neue zu erstellen. Es kann etwas Speicher sparen. Wie in diesem Beispiel:
%Vor%Tags und Links java abstract-class