Singleton pattern
-
Hallo,
ich habe gerade festgestellt , dass ich in 2 verschieden views dasselbe Objekt brauche. Allerdings kann ich das Objekt auch nur erstellen wenn ich vorher weiß welchen Dateipfad ich aufrufen muss. Die Datei ist nämlich eine XML und die verwende ich um das Objekt zu erstellen.
Ist es normal einem Singleton einen Parameter ( String filename ) zu übergeben und dann zu fragen hat sich der Filename geändert ? Die 2.View bräuchte den filename eigentlich gar nicht. Ich habe mir deswegen schon überlegt einen dummy Filename zu übergeben, wo man dann genau weiß dass er von View2 kommt und man einfach nichts weiter machen muss. z.b. ist der Filename "Dummy" dann return instance.
Was haltet ihr davon ?
-
Nicht viel. Vor allem in Java würd ich Dependency Injection benutzen.
-
blurry333 schrieb:
Die 2.View bräuchte den filename eigentlich gar nicht. Ich habe mir deswegen schon überlegt einen dummy Filename zu übergeben, wo man dann genau weiß dass er von View2 kommt und man einfach nichts weiter machen muss.
Parameter, die manchmal gebraucht werden und machmal nicht?
Das SCHREIT NACH EINEM WEITEREN SINGLETON!!11!1!
-
View1 braucht den Parameter. View2,3,4,5,6usw. braucht ihn nicht. Aber nur in View1 kann sich der Parameter ändern. Wenn ich jetzt noch ein Singleton mache , wie sollen dann die anderen Views davon benachrichtigt werden.
Wenn ich bei allen Views außer View1 "dummy" übergebe dann weiß ich genau welche View hier am Werk ist. Wie findet ihr das ? Wenn dummy übergeben wird , mach ich nichts weiter als die Singleton instance zurückzugeben. Ist das gut ?
-
Mechanics schrieb:
Nicht viel. Vor allem in Java würd ich Dependency Injection benutzen.
Sorry ich kann nur 3.7 benutzen. Injection gibt es erst ab Version 4.
-
Aber Singletons gibt's doch schon seit 3.6?! .
-
Mit Singletons lässt sich aber Dependency Injection schwer umsetzen.
-
ihr trollt hier alle oder?
dependency injection, singelton usw das sind patterns. was hat das mit version 3.6, 3.7 oder 4 zu tun?
-
sehr viel. Dependeny injection geht erst ab Version 4 !! Wenn du es selber implementierst dann natürlich schon früher. So seh ich das .
-
public class View { private Dependency d; public View(Dependency d) { } } ... Dependency d = ...; ... View v1 = new View(d); View v2 = new View(d); ...
-
sry in den konstruktor muss natürlich noch sowas wie
this.d = d;