Die Wiederverwendbarkeit kann man ebenfalls kapseln ohne dass Abhängigkeiten außerhalb einer Klasse hergestellt werden müssen. Z.B. in einer Factory.
Da Problem ist ja nicht die Übergabe einer Instanz schlechthin in den Konstruktor einer anderen Klasse. Das Problem ist, dass die Daten-Kapselung verlorengeht wenn Abhängigkeiten außerhalb der Klasse hergestellt werden. Ein Cookieobjekt arbeitet mit Request und Response zusammen und wird dadurch ggf. auch verändert und da fließen Daten. Solche Veränderungen und der Datenfluß werden infolge DI nach außen getragen -- was daran sollte denn da geteilt werden? Nein! Und nochmals Nein, alles was einen Request/Response Zyklus betrifft, darf sich nur in der Instanz derjenigen Klasse abspielen die diesen Zyklus handelt!
Verstehe ich dich richtig, dass Konstruktoren generell keine Parameter aufnehmen sollten?
Nein, im Gegenteil! Sie müssen außer Parameter welche im Konstrukt für die eigenen Instanz benötigt werden auch die Parameter bekommen die zum Erstellen aggregierter Instanzen erforderlich sind. Also kriegt bspw. der Konstruktor für einen HTTPClient einen Dateinamen übergeben, nämlich den den das in den HTTPClient eingebaute Cookie-Objekt braucht damit es weiß wo die Dinger gespeichert werden sollen.
Und dieses CookieObjekt wird nicht übergeben sondern
- Im Konstruktor des HTTPCLient erstellt
- und an Ort und Stelle in die Instanz des HTTPClient eingebaut.
MfG