Das wollte ich bei Punkt 2 eigentlich auch noch dazu reinschreiben. Aber jede Umfrage-Option darf höchstens 100 Zeichen lang sein.Mir fehlt hier eigentlich der Haken "ein Design-Pattern mit Daseinsberechtigung, welches meist falsch und von mir nur selten verwendet wird" Aus dem Grund hab ich für 2. gestimmt.
Versteh' ich grad' das Pattern nicht? An Singleton stellt sich doch nicht die Frage, ob ich nur eine Instanz einer Klasse brauche, sondern nur die Anforderung, das davon anwendungsweit nur ein Instanz existieren darf. Was hat das mit Faulheit zu tun?
... und nicht zuletzt, weil diese LAFs etwas komplizierter sind, ist doch "UIManager" durchaus sinnvoll. Letztendlich tauscht du in deinem Beispiel Eifer (Gegenteil von Faulheit?) gegen Performance ein ("getColor()"-Rekursiv).In der Theorie liegst du richtig. Aber in der Praxis sieht man halt leider oft etwas anderes. Ich verweise nocheinmal auf LookAndFeels: es wäre durchaus möglich gewesen, dass jede JComponent ihre LAF vom parent erbt, und man das LAF des Root-Windows halt selbst setzen muss. Wurde nicht so gemacht weil es natürlich einfacher ist...
[highlight=java]UIManager.getColor...[/highlight]
...zu schreiben als...
[highlight=java]if( parent != null ){
LookAndFeel feel = parent.getLaF();
if( feel != null ){
feel.getColor...
}
}[/highlight]
(ok, das war etwas böse gesagt. LaF's sind etwas komplizierter, mein Punkt ist trotzdem nicht falsch :bae: )
Mal was anderes: Gibt's da 'nen Bug im Board?
Situation:
-In der Tabelle der Themen wird eine Umfrage als "ungelesen" markiert, auch wenn kein neuer Beitrag existiert. Möglicherweise hat sich also nur das Ergebnis geändert.
-Wenn ich mir den Beitrag dann ansehe ist in der Tat das Ergebnis verändert. Auffällig dabei: der Wert für den man selbst gestimmt hat wurde um eins erhöht.
-Dann wechselt man wieder in die Tabelle: Umfrage erscheint als "gelesen"
-nach einem Aktualisieren der Seite, ist es wieder "ungelesen".
So ein Bug würde das Ergebnis extrem verfälschen.
... und nicht zuletzt, weil diese LAFs etwas komplizierter sind, ist doch "UIManager" durchaus sinnvoll. Letztendlich tauscht du in deinem Beispiel Eifer (Gegenteil von Faulheit?) gegen Performance ein ("getColor()"-Rekursiv).
Wenn wir über gutes Softwaredesign sprechen wollen, befinden wir uns auf der Ebene der (grauen?) Theorie.
Juchu, dann können wir ja die Hälfte aller Universitätsmitglieder entlassen?Niemand zahlt Geld für die Lösung von Problemen, die bloß in der blanken Theorie existieren aber keinen praktischen Bezug haben.
Mit Spring über Dependency Injection das Pool-Objekt in alle 20 Klassen, in denen es gebraucht wird, injizieren. Ganz einfach und leicht zu modifizieren.Oder wie würdet ihr das lösen, wenn euch das Pattern nicht gefällt?
Naja, das reicht noch nicht.Es kommt IMO ganz drauf an, ob sich der Singleton irgendwas "merken" soll oder nicht.
Wenn ja, dann ist es gerechtfertigt, wenn aber nicht, dann setze ich nur statische Methoden ein.
Nun, das ist wirklich sinnfreiNaja, ich habe auch schon Quellcodes gesehen, wo auch ein Singleton verwendet wurde, welcher aber keine Zustände hatte ;-).
Eben von jemandem, der Hardcore-Singleton-User ist *gg*
Die Objekte die eine Referenz auf das ehem. Singleton brauchen bekommen eben eine, per Setterparameter, oder per Konstruktorparameter, oder eben nur als Methodenparameter.Aber mal ne freche Frage: was gibt es da noch für Alternativen!?
Wo steht das schon wieder?Ein Singleton hat immer einen Zustand ("etwas merken"), sonst wäre es keines
Schon klar, aber wer Singletons ohne Zustand baut, frisst kleine Kinder, ääääääääähh.... hat keine Ausrede welche zu verwendenWo steht das schon wieder?
Ein Kühlschrank am Südpol ist Blödsinn, aber trotzdem ein Kühlschrank.
Was ist aber wenn es ein nicht so großes Programm ist und der Einsatz von Spring für das Projekt total übertrieben wäre?Mit Spring über Dependency Injection das Pool-Objekt in alle 20 Klassen, in denen es gebraucht wird, injizieren. Ganz einfach und leicht zu modifizieren.
Was ist, wenn ein Teil deiner Applikation mal in einem größeren Framework verwendet werden soll?Was ist aber wenn es ein nicht so großes Programm ist und der Einsatz von Spring für das Projekt total übertrieben wäre?
Das korrekte Design von Singletons ist schwierig – in der Regel schwieriger als Designs ohne Singletons.
Was ist aber wenn es ein nicht so großes Programm ist und der Einsatz von Spring für das Projekt total übertrieben wäre?
gilt sowas übrigens auch für Enums? dann hätte man ja ganz andere Probleme oder sollen alle Enum-Mengen per Spring übergeben werden?Man vergisst gerne, Singletons in Java gibt es nicht, da statisch nur pro Classloader Hierarchie einzigartig ist.
Spring Core ist ein 280 kB kleines Jar-File. Das würde ich in jedem Projekt integrieren. :bahnhof:
... Öhm... nö!Enums sind Bunches of Singletons
public enum Type {
A, B, C, D
}
Spring braucht keine WebApp, geht immer .@tfa: Was ist, wenn das aber keine WebApp ist sondern eine Standalone die mehere Verbindungen braucht? Soll ich da jetzt das SpringFramework reingeben?
Wieder kann Spring (oder ein anderes DI Framework) verwendet werden.Außerdem was ist wenn ich es im gleichen Programm in verschiedenen Klassen brauche? Dann kann ich entweder jeder Klasse eine Instanz der Hauptklasse mitübergeben oder irgendwo was static machen.
Oder was empfehlt ihr bei diesem Problem?
Da brauche ich im Konstruktor einmal die Settings einlesen und erzeuge/reservie dann die Verbindungen. Es greifen 20 verschiedene Klassen drauf zu.
Also warum sollten die alle dieses PoolConnection Objekt neu instanzieren wenns nicht nötig ist?!
Oder wie würdet ihr das lösen, wenn euch das Pattern nicht gefällt?
Stimmt. Hab ich übersehen. :rtfm:hehe, hab ich doch extra vorsorglich dazugeschrieben, mehr kann man doch nicht erwarten oder?