Der Begriff "Konfigurationsobjekt" ist in dieser Situation sehr unpassend, da er Ihre Bemühungen in einem rein mechanischen Sinne beschreibt. Das Ziel ist es, dem Verbraucher der Klasse Ihre Absicht mitzuteilen; lassen Sie uns in diese Richtung refaktorisieren.
Methoden oder Konstruktoren mit zahlreichen Parametern weisen auf eine lose Beziehung zwischen ihnen hin. Der Verbraucher muss im Allgemeinen mehr Schlussfolgerungen ziehen, um die API zu verstehen. Was ist das Besondere an diese 3 Dateien zusammen mit diese 3 Klassen ? Das ist die Information, die nicht mitgeteilt wird.
Dies ist eine Gelegenheit, eine aussagekräftigere und die Absicht verdeutlichende Schnittstelle zu schaffen, indem ein explizites Konzept aus einem impliziten extrahiert wird. Wenn die 3 Dateien zum Beispiel wegen eines Benutzers zusammenhängen, kann ein UserFileSet
Parameter würde dies deutlich zum Ausdruck bringen. Vielleicht f1
ist verwandt mit c1
, f2
zu c2
und f3
zu c3
. Die Deklaration dieser Assoziationen als unabhängige Klassen würde die Anzahl der Parameter halbieren und die Menge der Informationen erhöhen, die von Ihrer API abgeleitet werden können.
Letztendlich hängt das Refactoring stark von Ihrem Problembereich ab. Gehen Sie nicht davon aus, dass Sie ein einzelnes Objekt erstellen sollten, um eine Parameterliste zu erfüllen, sondern versuchen Sie, die Umstrukturierung entlang der Beziehungen zwischen den Parametern vorzunehmen. Dies wird immer zu einem Code führen, der das zu lösende Problem besser widerspiegelt als die Sprache, in der es gelöst wird.