Jestem trochę zmieszany wokół wzoru iniekcji Constructor i reguły Don’t call the container; it’ll call you.Wtryskarka konstruktora - gdzie chcesz zadzwonić?
Czy ktoś może mi wytłumaczyć (a może i ktoś inny), jak prawdziwa aplikacja powinna czerpać wszystkie korzyści z DI za pomocą wtrysku Konstruktora? Daję na to jakiś prosty i myślę, że wspólny przykład:
DomainObject
RepositoryObject
DaoObject
Stosunki jest oczywiste (chyba) - RepositoryObject trzeba DaoObject, DomainObject potrzebują repozytorium.
Korzystanie z wtrysku Konstruktor Zakładam, że mogę (w większości przypadków) zapomnieć o NOWYM słowie kluczowym, ale kiedy, gdzie i jak mam utworzyć nowe obiekty (głównie domena)? Muszę pisać fabryki dla wszystkich klas? Czy powinienem odnieść się do DI Container w tej fabryce?
Najlepiej będzie, gdy ktoś pokaże mi przykład prawdziwej aplikacji (proszę nie Asp.Net MVC :)) lub szkicować jakąś strukturę projektu.
Zobacz tę odpowiedź: http://stackoverflow.com/questions/6277771/what-is-a-composition-root-in-context-of-dependency-injection/6277806#6277806 –
@ Mark - OK, Myślę, że rozumiem, ale mam pewne problemy z tworzeniem obiektu domeny. Załóżmy, że stworzyłem obiekt kontrolny (Global.asax jako root aplikacji) i teraz mam trochę akcji (post), i muszę utworzyć w tym momencie, powiedzmy - nowa książka i książka wymagają pewnej zależności od c (repozytorium lub coś) . Jak utworzyć ten nowy obiekt? Czy ZAWSZE powinienem podawać tę zależność do obiektu kontrolera, chociaż niektóre z nich są używane WYŁĄCZNIE w celu utworzenia obiektu "Book"? Ta sama sytuacja dotyczy Repositorys (niektóre z ich metod tworzą nowe obiekty domenowe). – mgibas
http://stackoverflow.com/questions/4835046/why-not-use-an-container-to-resolve-dependencies-for-business-object/4836790#4836790 –