Singleton pattern

Status
Nicht offen für weitere Antworten.

dotlens

Top Contributor
hallo

wann ist es sinvoll denn singleton pattern zu verwenden? in einigen beschreibungen habe ich gelesen es sei nicht so schönes OOP und man sollte es nicht zu oft verwenden.
bei meinem progi habe ich es für den Controller verwendet, da er so einfach von überall zugänglich ist. ist meine überlegung korrekt? wann verwendet ihr ihn??

danke und gruss
 

dotlens

Top Contributor
aber dadurch hat man doch static??

Code:
private static Controller controller;

	public static Controller createController() {
		if(controller == null)
			controller = new Controller();
		return controller;
	}
 
S

stev.glasow

Gast
dotlens hat gesagt.:
hallo

wann ist es sinvoll denn singleton pattern zu verwenden? in einigen beschreibungen habe ich gelesen es sei nicht so schönes OOP und man sollte es nicht zu oft verwenden.
bei meinem progi habe ich es für den Controller verwendet, da er so einfach von überall zugänglich ist. ist meine überlegung korrekt? wann verwendet ihr ihn??

danke und gruss
Kein schönes OOP :shock: :bahnhof:
Das Pattern ist nützlich wenn du nur eine Instance einer Klasse zu lassen willst.
z.B. Ich habe eine Player Klasse die Sound abspielen soll, und wenn es zwei oder mehr Instanzen geben würde, würden die Sounds sich überschneiden (oder so, ist nur ein Beispiel)
 

Student

Top Contributor
stevg hat gesagt.:
z.B. Ich habe eine Player Klasse die Sound abspielen soll, und wenn es zwei oder mehr Instanzen geben würde, würden die Sounds sich überschneiden (oder so, ist nur ein Beispiel)

aber ein gutes.
 
B

Beni

Gast
stevg hat gesagt.:
Das Pattern ist nützlich wenn du nur eine Instance einer Klasse zu lassen willst.
z.B. Ich habe eine Player Klasse die Sound abspielen soll, und wenn es zwei oder mehr Instanzen geben würde, würden die Sounds sich überschneiden (oder so, ist nur ein Beispiel)

Andererseits könnte man Argumentieren, dass der Benutzer vielleicht zwei Sounds überlagern will... :wink:

Ne, ist ein gutes Beispiel. Aber wenn man es für Dinge "nicht gleichzeitig zwei Dokumente öffnen können, weil man sowieso nur eines lesen kann" missbraucht (und genau das tun leider viele Programmierer), ist es am falschen Platz.
 
B

bygones

Gast
ich bin Verfechter der Singleton - Configuration klasse.... in meinen Applikationen ist die config klasse für das Auslesen des config files zuständig (daher der Name ;) ) - sie hält alle relevanten Infos für das Programm. Daher soll sie nur überall zugreifbar sein und es sollen nicht zwei versch. Configurationen rummschwirren..

sonst noch gern genommes Singleton ist ein DatabasManager - um nicht versch. DB connections offen zu haben....
 

dark_red

Bekanntes Mitglied
Ich denke das wichtigste wurde gesagt. Gerade um Resourcen zu schonen, also Handles, Connections usw wiederzuverwenden ist das Pattern eine Lösung.

Des weiteren ist es unersetzbar bei Einführungskursen in Patterns oder UML: Ein klassisches Beispiel halt. Ich denke es geniesst da schon fast "Hello World"-Status. :bae:
 
H

helium

Gast
Ich denke das Problem ist nur, das viele Anfänger Singletons bauen, wo Mono-State sinnvoller wäre.
 

dark_red

Bekanntes Mitglied
Darin sehe ich eigentlich weniger ein Problem (auch wenn). Anfänger/Umsteiger scheinen sich gerne etwas bauen zu wollen, in dem sie ihre globalen Variabeln/Mothoden unterbringen können ohne OOP zu denken. Dabei finden sie schnell das Singleton, obwohl man dafür eher das MonoState benötigen würde, aber trotzdem ist ihr Denkansatz total falsch (sie denken Prozedual und wollen das irgendwie in OOP unterbringen).

Ich brauche MonoState eigentlich so gut wie nie. Singleton eher selten. Sobald ich bei einem MonoState ende, würde ich mir gedanken um das Klassendesign machen...

btw... hast du gerade ein gutes MonoState Bespiel?
 

Bleiglanz

Gesperrter Benutzer
Code:
   // am besten einen verwirrenden namen "create" verwenden
   public static Controller createController() {
      if(controller == null)
         controller = new Controller();
      return controller;
   }
mal von der synchronized Problematik abgesehen, warum nehmen einfach alle Anfänger irgendwelche Beispiele aus dem Netz und verwenden dann immer die späte initialisierung?

der code muss doch eh irgendwann ausgeführt werden, und wenn man dann beim programmstart gleich createController aufruft, dann ist das doch vollkommen überflüssig (code bloat)
Code:
private static Controller controller=new Controller();

public static Controller getController() {
      return Controller.controller;
}
 

Sky

Top Contributor
Bleiglanz hat gesagt.:
der code muss doch eh irgendwann ausgeführt werden, und wenn man dann beim programmstart gleich createController aufruft, dann ist das doch vollkommen überflüssig (code bloat)

Deine Annahem ist nur Richtig, wenn Du davon ausgehst, dass die zu erstellende Klasse für den Programmablauf zwingend erforderlich ist. Wenn Du aber ein Programm hast, welches mehr als eine fachliche Funktion hat und Du einen speziellen Controller nicht für alle Funktionen brauchst so macht es m.E. mehr Sinn die Instanz in dem Moment zu erzeugen, wo sie benötigt wird.
 

Bleiglanz

Gesperrter Benutzer
das meinte ich mit
...werden, und wenn man dann beim programmstart gleich createController...
Wenn die Instanz erst später benötigt wird UND die erzeugung eine gewisse zeit in Anspruch nimmt, ist nichts gegen die lazy initialization einzuwenden
 
H

helium

Gast
Oder wenn das Singleton Teil einer Bibliothek ist und nicht zwangsweise verwendet wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu dynamisches singleton... Softwareentwicklung 41
B Statische Klasse <=> Singleton Softwareentwicklung 7
B Haskell pattern matching in if else Anweisung umschreiben Softwareentwicklung 3
E Frage zu Dekorator-Pattern Softwareentwicklung 2
M Visito/Besucher Design-Pattern/Strukturmuster Softwareentwicklung 4
H2SO3- design pattern: code in model classes Softwareentwicklung 5
G Design Pattern gesucht! Softwareentwicklung 4
D Design Pattern Softwareentwicklung 6
slawaweis Factory-Builder Pattern? Softwareentwicklung 6
B konfigurierbare Objekte - Singelton und Factory Pattern Softwareentwicklung 3
C Flyweight-Pattern verhält sich unerwartet Softwareentwicklung 5
S Design Pattern für zwei abhängige Klassen Softwareentwicklung 8
U Decorator Pattern in der Java API Softwareentwicklung 6
M Proxy Pattern - Verständnisfrage Softwareentwicklung 2
0 Unklarheiten beim State Pattern Softwareentwicklung 2
N Composite pattern Softwareentwicklung 2
N Pattern Softwareentwicklung 2
L Builder Pattern Softwareentwicklung 6
1 Factory-Pattern: Bitte um Tipps zur Anwendung Softwareentwicklung 3
L Pattern Softwareentwicklung 3
J DAO Pattern bei komplexen Datenbankzugriffen Softwareentwicklung 2
M IllegalStateException - Problem mit GUI und Observer pattern Softwareentwicklung 4
G Pattern für Datenbank Anwendung Softwareentwicklung 22
A Iterato-Pattern und Innere Klassen Softwareentwicklung 9
F Unterschied Command und Strategy pattern Softwareentwicklung 4
F Wann Observer Pattern nehmen und Vorteile davon? Softwareentwicklung 5
H Frage ueber Prototype Pattern? Softwareentwicklung 2
K Design Pattern für einen simple Rechenmaschine Softwareentwicklung 18
G Warum/Wann mehrere Modells beim MVC-Pattern verwenden ? Softwareentwicklung 7
timomeinen DAO Pattern - Relationen mit DTO abbilden Softwareentwicklung 9
M decoration pattern Softwareentwicklung 2

Ähnliche Java Themen

Neue Themen


Oben