singleton

Status
Nicht offen für weitere Antworten.

Freak

Mitglied
hallo liebe javaneser

ich habe ein problem und zwar versteh ich nicht was ein singleton ist unnd wozu er gut ist ich habe im internet viel darüber gelesen aber verstehe es nicht ganz wäre sehr froh wenn mir das jemand leicht erklären könnte und noch besser an hand eines beispiels egal in welcher prog sprache das prinzip is nämlich das selbe nehm ich mal an

danke schon im voraus für die antworten

euer freak
 

Schandro

Top Contributor
Beispiel-Mindestaufbau einer Singleton-Klasse
Java:
final class MySingleton{
	private MySingleton(){} // privater Konstruktor damit er von außen nicht aufgerufen werden kann (außer durch Reflection...)
	private static final MySingleton instance = new MySingleton(); // statische Instanz, die direkt beim ersten benutzen dieser Klasse initialisiert wird. Kann alternativ auch per lazy initialization in der Methode getInstance initialisiert werden beim ersten Aufruf)
	public static MySingleton getInstance(){return instance;} // öffentlicher getter für instance, einzige Möglichkeit um von außen an ein Object dieser Klasse zu kommen (new MySingleton geht von außen nicht da Konstruktor private ist...) 
}

PS: Man sollte Singletons AUF KEINEN FALL nur dafür missbrauchen, um von überall im Quellcode auf
die Instanz einer Klasse zugreifen zu können (als Ersatz für die in Java nicht direkt existierenden "Globalen Variablen").
static ist böse
 
Zuletzt bearbeitet:

DarXun

Aktives Mitglied
Ich selbst habe es erst vor kurzem das erste Mal eingesetzt.
Ein Singleton ist ein Entwurfsmuster für eine Klasse, soweit ich es verstanden habe.
Das bedeutet, dass es keine eingebaute Funktion von Java ist, sondern du es selbst einbaust.
Sinn und Zweck des Singleton ist es, dass man nur ein einziges Objekt der Klasse haben kann.

Bei meiner Engine für ein RPG habe ich meine Hauptklasse "zum Singleton gemacht".
Einige andere Klassen brauchen Informationen meiner Hauptklasse, wie z.B. die Spielfigur,
oder auch die Grafische Oberfläche, die ebenfalls in der Hauptklasse enthalten ist.
Um etwas auf dem Bildschirm auszugeben müssen die meißten Klassen den Umweg über meine Hauptklasse gehen. Das hat den Vorteil, dass, wenn ich etwas an der Art und Weise, wie Text oder Bild ausgegeben werden, ändere, ich nur an einer Stelle etwas ändern muss.
Damit diese Klassen aber überhaupt an das Objekt meiner Hauptklasse herankommen, habe ich mich für das/den (?) Singleton entschieden.

Ich habe also den Konstruktor meiner Hauptklasse privat deklariert und der Klasse ein statisches Objekt von sich selbst gegeben.
Dann fehlt nur noch eine statische Methode, mit der man an das Objekt herankommt.

Wie man schon vom Namen her mutmaßen kann, ist es wirklich so, dass es nur EIN EINZIGES("Singleton" -> single) Objekt der Klasse geben kann.
 
Zuletzt bearbeitet:

Illuvatar

Top Contributor
@DarXun
Es gibt da zwar verschiedene Ansichten, aber meiner Meinung nach ist das gerade das, was man mit mit einem Singleton nicht machen sollte. Das Problem hier ist das gleiche wie in den sehr vielen Fällen wo das static-Keywort auftaucht:
Ui, so kann ich ja globale Variablen machen. Toll, dann muss ich mich nicht mehr darum kümmern eine gute Klassenstruktur zu entwerfen.
Es gibt kein irgendwie logisches Argument, warum es nur ein solches Objekt geben sollte. Ein Singleton ist imho nur gerechtfertigt in Fällen wie z.B. einer Klasse "Bildschirm"(*). Denn davon gibt es wirklich nur einen.

Ohne irgendwas von deinem Spiel zu kennen: Ich vermute das Problem liegt in
Einige andere Klassen brauchen Informationen meiner Hauptklasse
Wieso? Klingt nach zu starker Kopplung.

Mehr Diskussion gibts hier: [thread]80674[/thread]

(*) Angenommen man fasst sämtliche physikalischen Bildschirme als einen großen virtuellen Desktop auf. Oder, man macht kein Singleton sonder ein Ding von dem so viele Instanzen existieren wie es eben tatsächlich Bildschirme gibt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
W Sinn eines Singleton ? Java Basics - Anfänger-Themen 14
O Singleton Java Basics - Anfänger-Themen 5
R Methode in Singleton Klasse Java Basics - Anfänger-Themen 1
O Singleton Verständnis Java Basics - Anfänger-Themen 4
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Singleton (Design Patterns) Java Basics - Anfänger-Themen 16
R OOP Singleton Java Basics - Anfänger-Themen 10
U Vererben von Singleton Java Basics - Anfänger-Themen 17
S Singleton - Daten einspielen Java Basics - Anfänger-Themen 5
K Warum ist ein Singleton kein Best Practise? Java Basics - Anfänger-Themen 3
M Singleton mit Parametern im Konstruktor Java Basics - Anfänger-Themen 18
D Singleton beim JFrame zerstören Java Basics - Anfänger-Themen 4
L Java Serialisierung Singleton Java Basics - Anfänger-Themen 6
A JBoss-Anwendung soll im Singleton-Mode laufen Java Basics - Anfänger-Themen 6
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
S Instanz(en) einer Singleton-Klasse Java Basics - Anfänger-Themen 11
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
J Warum verwendet man Singleton? Java Basics - Anfänger-Themen 7
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
S Singleton lazy Java Basics - Anfänger-Themen 8
A ist das ein Singleton-Pattern? Java Basics - Anfänger-Themen 6
P Singleton-Implementation Java Basics - Anfänger-Themen 8
T Singleton Java Basics - Anfänger-Themen 13
Antoras Singleton oder Controller / Datenverwaltungsklasse? Java Basics - Anfänger-Themen 10
D Objekte anlegen und Singleton Pattern Java Basics - Anfänger-Themen 21
D Denkfehler Singleton Java Basics - Anfänger-Themen 53
X Singleton - In diesem Fall sinnvoll? Java Basics - Anfänger-Themen 22
S Fragen zu synchronized + Singleton! Java Basics - Anfänger-Themen 10
M Singleton Pattern Java Basics - Anfänger-Themen 35
J Singleton Pattern Java Basics - Anfänger-Themen 5
S Singleton Pattern passend hierfür? Java Basics - Anfänger-Themen 60
M Mp3 Player mit Singleton Java Basics - Anfänger-Themen 8
M GUI als SingleTon Java Basics - Anfänger-Themen 6
B Singleton und Resourcebundle Java Basics - Anfänger-Themen 7
G Singleton Pattern Java Basics - Anfänger-Themen 7
D Singleton in Java implementieren Java Basics - Anfänger-Themen 6
H singleton Synchronisations Problem? Java Basics - Anfänger-Themen 2
M Singleton verwenden, aber wie? Java Basics - Anfänger-Themen 3
H Singleton mit Attributen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben