instance

K

KingFox2

Gast
Java:
public class PersonenVerwaltung {

	private static PersonenVerwaltung instance;
	private Person [] 	personen = new Person[20];
	private int 		anz;
	
	private PersonenVerwaltung() {
	}

	/**
	 * Liefert die Singleton-Istance für dieses Personen-Object
	 * @return
	 */
	
	public static PersonenVerwaltung getInstance() {
		
		if( instance == null ) {
			instance = new PersonenVerwaltung();
		}
		
		return instance;
	}

kann mir jemand die Funktion von instance erklären hier an dem Beispiel?
Geh ich richtig in der Annahme, dass es lediglich dafür sorgt, dass nur ein Objekt vorhanden sein kann?
lg
 
G

gman

Gast
Richtig, das ist das Singleton-Pattern. Wobei der Kommentar etwas irreführend ist:

Java:
    /**
     * Liefert die Singleton-Istance für dieses Personen-Object
     * @return
     */

Den die Methode "getInstance" liefert das einzige Objekt der Klasse "PersonenVerwaltung"
zurück das je existieren wird (weil der Konstruktor ja private ist).
 

Wortraum

Bekanntes Mitglied
> Geh ich richtig in der Annahme, dass es lediglich dafür sorgt,
> dass nur ein Objekt vorhanden sein kann?

Ja, das hast Du richtig erkannt. Der Konstruktor ist privat, also nur von der Klasse selbst aufrufbar. Die Methode getInstance() hingegen darf von außen aufgerufen werden, erstellt beim erstenmal das Objekt und gibt dann immer nur dieses eine Objekt zurück. In anderen Worten: so lange das Programm läuft, gibt es von dieser Klasse höchstens ein Objekt.

Ganz gleich, wo Du Dich im Programm befindest, kommst Du mit PersonenVerwaltung.getInstance() an die Personenverwaltung. Das ist beispielsweise auch bei Konfigurationen nützlich, die es auch nur ein einziges mal geben und das erzeugte Objekt überall verfügbar sein sollte.
 
G

Gast2

Gast
Das ist beispielsweise auch bei Konfigurationen nützlich, die es auch nur ein einziges mal geben und das erzeugte Objekt überall verfügbar sein sollte.

@KingFox
Obwohl man dazu sagen muss dass das Singelton Pattern nicht unumstritten ist. Du solltest es definitv nicht als Allzweckwaffe nutzen (quasi als Ersatz für globale Variablen) sondern den Einsatz des Musters immer gut überlegen. In manchen Fällen ist es sinnvoll - in vielen Fällen aber auch überflüssig oder sogar eher schlecht.

Wenn dich dazu mehr interessiert such mal hier nach Singelton Diskussionen - da gibt es schon einiges zu
 

Wortraum

Bekanntes Mitglied
Sonderlich überraschend finde ich es nicht, daß jedes Muster Vor‐ und Nachteile hat. Das Streiten überlasse ich anderen; derweil nutze ich es gerne und bin zufrieden. ;)
 
G

Gast2

Gast
Stimme ich dir voll und ganz zu. Allerdings wird grade das Singleton gerne inflationär verwendet... War ja nur ein Hinweis. Wie heißt es so schön: "Wenn man einen neuen Hammer hat sieht ales aus wie ein Nagel"?
 

Ähnliche Java Themen

Neue Themen


Oben