Zpo-13-wyk-Slajd14
Odwrócone rozwiązywanie zależności
Rozwiązaniem zdecydowanie zmieniającym układ zależności jest wprowadzenie odwróconego sterowania (ang. Inversion of Control , IOC). Polega ono na innym przydziale odpowiedzialności do poszczególnych komponentów.
Komponenty stają się pasywne, tj. nie tworzą samodzielnie innych komponentów, tylko je odbierają od innego obiektu. W ten sposób są pozbawione wpływu na sposób zarządzania ich instancjami.
Ponadto, dominującą rolę przejmuje nowy uczestnik interakcji – kontener, nazywany często kontenerem IoC. Jego rola polega na zarządzaniu tworzeniem wszystkich komponentów oraz dostarczaniu gotowych instancji klientowi. Komponenty, chcąc rozwiązać swoje zależności, zlecają tę czynność kontenerowi, który zna wszystkie komponenty (przechowuje ich konfigurację w rejestrze) i może dostarczyć ich instancje.
W tym układzie rola klienta nie ulega zmianie, jednak możliwość konfiguracji i wpływu na zachowanie komponentów jest znacznie poprawiona. Zamiast bezpośrednich powiązań pomiędzy implementacjami komponentów, zależą one od kontenera, którego konfiguracja decyduje o utworzeniu ich instancji.