Hallo Zusammen,
ich habe eine Factory-Klasse erstellt, der mir die Instanz einer Klasse zurück gibt.
In der main() Methode rufe ich die Factory-Klasse auf zwei verschiedene Weisen auf.
Frage
Warum wird in der nicht auskommentierte Variante immer die gleiche Instanz der Klasse MyFactory zurück gegeben?
Aufgrund der Tatsache, dass die Objekte der Factory-Klasse innerhalb der for-Schleife erstellt werden und die Objekte der MyClass innerhalb der Factory sollte eigentlich pro Schleifendurchlauf ein neues Objkt der Klasse MyClass erzeugt werden!
In der Auskommentierten Version rechne ich auf Grud der Tatsache, dass das Objekt der MyFactory-Klasse außerhalb der for-Schleife erzeugt wird mit dem gleichen Objekt der MyClass Klasse!
Ich hoffe, dass mein Anlieger halbwegs verständlich war!
Gruß,
Michael
Klasse MyFactory
Klasse MyClass
Klasse Start
ich habe eine Factory-Klasse erstellt, der mir die Instanz einer Klasse zurück gibt.
In der main() Methode rufe ich die Factory-Klasse auf zwei verschiedene Weisen auf.
Frage
Warum wird in der nicht auskommentierte Variante immer die gleiche Instanz der Klasse MyFactory zurück gegeben?
Aufgrund der Tatsache, dass die Objekte der Factory-Klasse innerhalb der for-Schleife erstellt werden und die Objekte der MyClass innerhalb der Factory sollte eigentlich pro Schleifendurchlauf ein neues Objkt der Klasse MyClass erzeugt werden!
In der Auskommentierten Version rechne ich auf Grud der Tatsache, dass das Objekt der MyFactory-Klasse außerhalb der for-Schleife erzeugt wird mit dem gleichen Objekt der MyClass Klasse!
Ich hoffe, dass mein Anlieger halbwegs verständlich war!
Gruß,
Michael
Klasse MyFactory
Java:
public class MyFactory {
private static MyClass INSTANCE = new MyClass();
public MyClass getInstance() {
return INSTANCE;
}
}
Klasse MyClass
Java:
public class MyClass {
public MyClass() {
}
}
Klasse Start
Java:
public class Start {
public static void main(String[] args) {
for(int i=0; i<2; i++) {
MyFactory factory = new MyFactory();
MyClass myClass = factory.getInstance();
System.out.println(myClass);
}
// MyFactory factory = new MyFactory();
// for(int i=0; i<2; i++) {
// MyClass myClass = factory.getInstance();
// System.out.println(myClass);
// }
}
}
Java:
Ausgabe
-------
de.test.MyClass@addbf1
de.test.MyClass@addbf1