Frage

Ich bin sicher nicht für die Fälle verwenden sollte man DI in der Anwendung zu verwenden. Ich weiß, dass Dienste wie PlaceService oder CalculationService usw. passt sehr gut injizieren, aber sollte ich auch meine Domain-Objekte mit DI wie ein User schaffen? Was ist, wenn der User nur ein Konstruktor hat, die einen ersten und Nachnamen erforderlich ist. Ist der lösbare mit DI?

Sollte ich DI die Instanzen für Set / Liste Schnittstellen zu schaffen oder ist das reine Overkill?

Ich verwende guice in erster Linie.

War es hilfreich?

Lösung

Die Regel, die ich verwendet wird, im Allgemeinen, Dependency Injection zu begünstigen, es sei denn, das Objekt mit rein primitiven Werten aufgebaut werden und es gibt keine / eine minimale Chance, dass das Objekt könnte durch eine andere Implementierung ersetzt werden.

Doch für Domänenobjekte, vor allem, wenn Ihre Objekte stellen keine anämischen Domänenmodell , das heißt, wo Objekte nur Taschen von Getter und Setter sind, kann es sinnvoll sein, Objekte zu haben, die zum Beispiel selbst in einen Datenspeicher bestehen können, usw. für jene Art von Objekten, Dependency Injection und Salve kann eine leistungsstarke Kombination sein.

hat Guice eine spezifische Lösung für die Art des Problems durch Objekte wie Ihr Benutzerobjekt gestellt genannt AssistedInject , obwohl ähnliche Dinge sind auch möglich, mit einem anderen leichtgewichtigen Behältern oder mit etwas die Builder oder Adapter-Muster.

Andere Tipps

Die Antwort von ig0774 ist ein guter Ausgangspunkt. Darüber hinaus würde Ich mag diese Daumenregel bieten:

In der Terminologie der Domain-Driven Design , sollten Sie DI für Dienste , aber nicht für Einheiten oder Wert-Objekte .

Mit anderen Worten, DI passt gut konzeptionell langlebiges, staatenlos Objekte, von denen es in der Regel eine oder eine bekannte Anzahl in Gebrauch ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top