Dies ist etwas, das ich ein paar Mal begegnet bin und noch keine befriedigende Antwort gefunden habe. Das scheint ziemlich dumm zu sein, aber nachdem ich das eine Weile gegoogelt habe, konnte ich mir nichts Gutes einfallen lassen.Mehrere optionale Argumente im Konstruktor in Java - exponentielle Anzahl von Konstruktoren
Angenommen, ich habe eine Klasse mit 20 Instanzvariablen, von denen jede optional ist (wird initialisiert oder nicht).
Jetzt möchte ich meine Konstruktoren alle Fälle behandeln, im Falle einiger Instanzvariablen ist es in Ordnung, und ich kann nur Konstruktoren mit unterschiedlichen Signaturen erstellen, aber hier habe ich 20, also würde ich 2^benötigen 20 = 1.048.576 Konstruktoren für alle Fälle! Das scheint ... nicht sehr optimal, stimmst du nicht zu?
Da mit diesem Brute-Force-Ansatz ich im Grunde 2^n Konstruktoren konstruieren muss, wobei n die Anzahl der Instanzvariablen ist, möchte ich einen besseren Weg finden, es zu tun.
Ich habe ein paar Lösungen für dieses Problem gesehen, aber ich glaube, sie alle auf Annahmen über die Daten, aber in meinem Fall kann jede dieser Variablen initialisiert werden oder nicht zufällig, ich habe keine Möglichkeit, das vorher zu wissen Initialisierung.
Ich bin für einige Designmuster oder Ideen suchen, die ich anwenden könnte meinen Code ein bisschen mehr ... wartbar (keine keine Sorge ich 1M + Konstrukteuren nicht schaffen machen :)
Danke.
Bohnenmuster. Konstruktor hat keine Argumente, alle Parameter gehen durch Setter hinein. – bmargulies
das scheint albern, ich sagte, ich habe 20 Instanzvariablen, aber in Wirklichkeit habe ich mehr, ich möchte nicht 20 verschiedene Setter anrufen! Es könnte in inkonsistentem Zustand sein, teilweise durch seine Ausführung, das scheint eine sehr schlechte Lösung zu sein. –
Und dies verbietet mir auch, meine Klasse unveränderlich zu machen. –