Statische Klassen/ Singleton

Semptic

Mitglied
Wann sollte ich Statische Klassen benutzen?

Bei Klassen die nur eine Instanz haben werden, wie zum Beispiel bei dem Hauptfenster einer Anwendung?

Was sind die Vor- oder Nachteile von Statischen Klassen?

Ich würd sagen Statische Klassen sparen Rechenleistung und auch Speicher und daher sollte ich wenn möglich Statische benutzen, sicher bin ich mir da aber ganz und gar nicht.
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
=> Am besten nicht benützen

Wieso?

Die Umfrage unterstützt doch eher:
[c]manchmal ein nützliches Entwurfsmuster. Ich setzte sie hin und wieder ein.[/c]

Wichtig ist halt wie und wann man ein Singelton einsetzt damit es z.B. kein Performance Flaschenhals wird.
 
Zuletzt bearbeitet von einem Moderator:

Semptic

Mitglied
Schon, aber die Beiträge in den beiden Threads sagen eher aus das man sie am besten nicht hernimmt, weil es auch ohne geht und man sie so nicht Falsch verwenden kann.

Des einzige wo sich alle einig sind ist das es sinnvoll DI Frameworks (Spring) zu verwenden. Da hab ich aber garkeine Ahnung was des ist und wofür man des braucht bzw. wie man es verwendet. (Umsomehr ich hier im Forum les umso mehr Anfänger bin ich. :oops:) Versuch da mal zumindest den groben überblick zu bekommen, aber man muss ja auch noch nebenher Studieren...^^
 
M

maki

Gast
Wichtig ist halt wie und wann man ein Singelton einsetzt damit es z.B. kein Performance Flaschenhals wird.
Naja... "statische" Singletons haben ein problematisches Design... da ist die Performancesache absolut untergeordnet ;)

Semptic, hab keine Angst Singletons einzusetzen, solange du weisst dass es andere Alternativen gibt kannst du dir diese ja in Zukunft ansehen ;)
 
G

Gast2

Gast
Ja richtig. Schlechtes Deisgn, miese Testbarkeit etc, kommt viel zusammen was gegen Singletons spricht. Habe extra geschrieben "z.B." Performance Falschenhals.

Performance hatte ich direkt erwähnt weil ich grade damit den Spaß hatte... Ein Singleton das jeden Zugriff in einem großen heavyload mulithreaded System abfrühstückte... Das Problem aufzulösen ohne zuviel umzureißen ist harte Arbeit...

Ich denke für manche Anwendungsfälle halt geeignet, man muss sich nur der Auswirkungen (Skalierbarkeit, Architektur des Gesamtsystems, Testbarkeit etc) bewusst sein wenn man das Pattern wählt.
 
Zuletzt bearbeitet von einem Moderator:
B

bygones

Gast
solange man den Unterschied zwischen einer singelton Klasse und einem Singleton kennt ists in Ordnung.

Singleton zwingt sich seine "Einzigartigkeit" selbst auf - das beruehmte bsp mit einer statischen Variable und privaten Konstruktor... das sollte man nicht nutzen (siehe tausend argumentation hier und dort).
Das wuerde schon allein dem Single-Responsibilty widersprechen. Eine Klasse sollte nicht die Aufgabe haben sowohl ihr Erstellung, als auch ihre Logik zu verwalten.

In einer Applikation nur eine Instanz einer Klasse zu haben ist kein Problem - also eine singleton Klasse.
 
M

maki

Gast
Ja richtig. Schlechtes Deisgn, miese Testbarkeit etc, kommt viel zusammen was gegen Singletons spricht. Habe extra geschrieben "z.B." Performance Falschenhals.

Performance hatte ich direkt erwähnt weil ich grade damit den Spaß hatte... Ein Singleton das jeden Zugriff in einem großen heavyload mulithreaded System abfrühstückte... Das Problem aufzulösen ohne zuviel umzureißen ist harte Arbeit...

Ich denke für manche Anwendungsfälle halt geeignet, man muss sich nur der Auswirkungen (Skalierbarkeit, Architektur des Gesamtsystems, Testbarkeit etc) bewusst sein wenn man das Pattern wählt.

:toll:
 

fastjack

Top Contributor
Eine interessante Sache, die ich mal gelesen habe, ist das Enum als Singleton. Hat natürlich auch Vor- und Nachteile. Allerdings sollen auf diese Weise die ganzen üblichen Singeleton-Späße wie double-checked und Co umschifft werden.
Persönlich mag ich die Singletons nicht besonders. Allerdings kenne ich einige Software-Architekten, die grundsätzlich alles in Singeltons verfrachten, totale Globalisierer eben, die ihren Ursprung noch im VB-Basic hatten und sich geistig noch in Subroutinen befinden, weil der return fehlte. :eek:
 
M

maki

Gast
Ja solche trifft man immer wieder ;)
Für diejeniegen sind allerdings Dinge wie "wie initialisiere ich meine 18 Singletons die alle gegenseitig voneinander abhängig sind" das größte Problem :)
 

fastjack

Top Contributor
18 geht ja noch. Am Ende hatten wir über 150 Klassen, die der gute Architekt zu Singletons verwandelte. Zugriff auf bestimmte Methoden regelte er über ThredLoacel und Reflections. Kurze Zeit später war er selber ein Singleton ;) und wurde auf null gesetzt. :noe:

Seitdem gilt bei uns :

Java:
if (this instanceof SoftwareArchitect) {
    this.deleted = true;
    this.refresh();
}

:lol:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
M wann statische klassen? Java Basics - Anfänger-Themen 14
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Statische Methoden Java Basics - Anfänger-Themen 22
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
H Statische generische Methode Java Basics - Anfänger-Themen 2
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
hdi statische synchronisation Java Basics - Anfänger-Themen 6
G statische ArrayList? Java Basics - Anfänger-Themen 8
K Statische Variablen von Objekten im Array Java Basics - Anfänger-Themen 15
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
G statische Variable zugreifen bzw. setzen Java Basics - Anfänger-Themen 6
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M Statische Funktion Java Basics - Anfänger-Themen 2
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
H statische methoden und sichtbarkeit Java Basics - Anfänger-Themen 13
nadoria statische Methoden (Klassenmethoden) Java Basics - Anfänger-Themen 3
K statische variablen und methode Java Basics - Anfänger-Themen 3
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
G Statische Methoden? Java Basics - Anfänger-Themen 2
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
H statische, dynamischer Typ von Variablen Java Basics - Anfänger-Themen 1
M Konstruktor eine statische Methode? Java Basics - Anfänger-Themen 9
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
U statische Variablen Java Basics - Anfänger-Themen 12
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
K Statische Methoden!? Java Basics - Anfänger-Themen 8
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben