Dann verstehe ich deine konkrete Frage gerade nicht *schäm* ^^
Was ne Antwort
Die View sind selbst JPanels und bestehen aus vielen JComponents. Die JComponents erzeuge ich in den Views nicht mit Spring. Stattdessen habe ich eine Factory geschrieben, die mir meine JComponents erzeugt.
<servlet>
<display-name>XFire Servlet</display-name>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
Dieser Satz sollte nur dabei helfen zu erklären, was ein Singleton leisten soll. Wenn es in einer bestimmten Situation nur Grund für ein Objekt der Klasse X gibt, heißt das ja nicht, dass man aus X jetzt unbedingt ein Singleton sein muss. Vielleicht brauche ich morgen ein zweites X-Objekt. Von der Testbarkeit ganz zu schweigen. Deswegen soll man sich vor der Erschaffung eines Singletons erst fragen, brauch ich kjetzt wirklich nur ein Objekt, oder muss ich verhindern, dass es mehr als ein Objekt gibt?"Wozu Singleton? Wenn ich ein Objekt nur einmal instanzieren muss, dann instanziere ich es eben nur einmal."
Weil man hierdurch anerkannte Prinzipien des OO-Entwurfs verletzt. Ebenso wie durch den unnötigen Gebrauch von Singletons.Wieso gibt es in Java abstrakte Klassen? Wenn ich eine Klasse nicht instanzieren möchte, dann instanziere ich sie eben nicht?
Wieso gibt es in Java private Variablen? Wenn ich auf eine Variable nicht zugreifen soll, dann greife ich eben nicht darauf zu!
Das ist bestimmt nicht der eigentliche Kritikpunkt, sondern eher Nebensache. Eine Gesetzteslücke, die selten auftritt. Ebensogut könnte man Diebstahl legalisieren, weil man ihn ja nicht 100%ig verhindern kann.Ansich richtig und ich benutze sie auch ab und an, aber der eigentliche Kritikpunkt ist halt in Java:
Du hast mehrere Classloader (bzw kannst mehrere haben) und du kannst nicht unterbinden, dass die Instanz mehrere Male erstellt wird, weil in Java 2 Klassen aus dem selben Bytecode durch 2 Classloader 2 verschiedene Klassen ergeben. Heißt es wird eine Instanz pro Classloader erstellt.
übertriebene Groß-Projekt-Ansicht, die in jedes minimale Beispiel hineingedrückt wird ... Anfängerprogramm
... dann kann man machen, was man will, wenn's eh keinen interessiert. Oder man entwickelt sich weiter, wenn man später mal an mittelgroße oder große Programme gelassen werden will. Das soll jeder selbst entscheiden.angenommen man hat ein kleines Programm ohne gar den Begriff JUnit zu kennen..
Wirst lachen, aber genau das ist meist der Fall.@tfa: Wenn ich also Singletons verwende, hab' ich kaum Chancen an einem Grossprojekt mit zu arbeiten? Kaum zu glauben... :lol:
... dann kann man machen, was man will, wenn's eh keinen interessiert. Oder man entwickelt sich weiter, wenn man später mal an mittelgroße oder große Programme gelassen werden will. Das soll jeder selbst entscheiden.
"Wenn man einen neuen Hammer hat, sieht jedes Problem wie ein Nagel aus"Daher meine Meinung: Singletons sind genial (zumindest am Anfang)
Eben nicht.sie ersetzen das gesamte Spring/DI durch ein paar Zeilen Code-Muster
Das ist doch das Problem, dass sich Singletons nicht ersetzen lassen(oder nur sehr aufwändig) und schwer zu testen sind, sie verhindern oft richtiges Unittesting.Daher meine Meinung: Singletons sind genial (zumindest am Anfang), sie ersetzen das gesamte Spring/DI durch ein paar Zeilen Code-Muster. Viel Zeit sich um andere, meines Erachtens wichtigere Dinge zu kümmern... Richtiges JUnit Testing...
Vielleicht vertrete ich mal die Meinung das Singletons vermieden werden sollten, aber niemals die Meinung das es Immer und in jedem Falle schlecht ist.
Du kannst das Ding nicht Singleton nennen, wenn du es nicht als solches benutzt. Hauptkriterium muss dafür sein 'geht die Welt unter wenn jemand eine zweite Instanz erzeugt'Daher meine Meinung: Singletons sind genial (zumindest am Anfang), sie ersetzen das gesamte Spring/DI durch ein paar Zeilen Code-Muster.
Eine statische Klasse mit statischen Membern tut es meist auch.
Wenn man in die Verlegenheit kommt ein Singleton zu brauchen weiß man "Mein System ist groß genug für DI", nicht mehr und nicht weniger.
Wenn man in die Verlegenheit kommt ein Singleton zu brauchen weiß man "Mein System ist groß genug für DI", nicht mehr und nicht weniger.