# Statische Klasse <=> Singleton



## bygones (30. Apr 2004)

Hi,

würde gern mal eure meinung hören:

Soll eine Klasse eher nur statische methoden haben oder als Singelton implementiert werden wenn man nur eine Instanz der Klasse haben will. Bzw. warum macht das Singelton pattern sinn, wenn ich alles als statisch deklariere habe ich doch den gleichen Effekt ??

Meinungen ?


----------



## Illuvatar (30. Apr 2004)

Da habe ich noch nicht darüber nachgedacht.
Aber eigentlich ist der einzige Unterschied die Art, wie man darauf zugreift, oder?


----------



## stev.glasow (30. Apr 2004)

Wenn du alles statisch machst ist das ganze recht unflexibel. Denn wenn du dir z.B. später mal mehr als ein Objekt 'halten' willst muss du erstmal einiges am code ändern, was bei der Siglemethode einfacher zuhandhaben ist, dort brauchst du dann nämlich nur den Konstrukor public setzen oder diese eine static-methode anpassen.


----------



## bygones (30. Apr 2004)

Illuvatar hat gesagt.:
			
		

> Da habe ich noch nicht darüber nachgedacht.
> Aber eigentlich ist der einzige Unterschied die Art, wie man darauf zugreift, oder?


Naja nicht ganz - bei einem Singelton sind die Methoden und Variablen meist instanzmethoden-/variablen, bei einer statischen Klasse ist alles statisch.
D.h. man greift dann über Klasse.tuwas() zu, bei einem Singeltion z.b. Klasse.getInstance().tuWas(),,

@stevg: stimmt da hast du recht...


----------



## Illuvatar (30. Apr 2004)

deathbyaclown hat gesagt.:
			
		

> Illuvatar hat gesagt.:
> 
> 
> 
> ...



Sorry, hab mich vielleicht etwas falsch ausgedrückt.
Das ein Singleton eine Objektinstanz ist, war mir klar.
Ich meinte, dass der Unterschied beim Benutzen eines Singletons/einer statischen Klasse liegt, eben genau das, was du auch geschriben hast.


			
				deathbyaclown hat gesagt.:
			
		

> D.h. man greift dann über Klasse.tuwas() zu, bei einem Singeltion z.b. Klasse.getInstance().tuWas(),,



@stevg
*auch zustimm*


----------



## norbört (3. Mai 2004)

das ist meiner meinung nicht ganz richtig:

wenn du mit klasse.getInstance().method() zugreifst, dann kannst ja auch gleich eine statische methode nehmen odeR?

klasse instanz = klasse.getInstance();
instanz.method(); -> das ist dann, wie es sein soll... oder?

ciao


----------



## Illuvatar (3. Mai 2004)

Bei einem Singleton ist


			
				norbört hat gesagt.:
			
		

> ```
> klasse.getInstance().method()
> ```


das gleiche wie


			
				norbört hat gesagt.:
			
		

> ```
> klasse instanz = klasse.getInstance();
> instanz.method();
> ```


oder?

Darum, dass man auch gleich statische Methoden nehmen kann, geht es ja gerade.


----------



## Guest (3. Mai 2004)

no, das stimmt nicht 

das gleiche ist es nicht, weil bei einem singleton einmalig ein objekt instanziert (erzeugt) wird und der konstruktor ausgeführt wird. bei static klassen wird kein konstruktor ausgeführt.
was von der "schnelligkeit" besser ist - glaub ich - sind static klassen, weil die anders "geladen" werden.

nur zB bei einer datenbankklasse, könnte man ein singleton nehmen, da dann zB erstmalig die verbindung hergestellt wird...

ciao


----------

