Zpo-13-wyk-Slajd21

Z Studia Informatyczne
Wersja z dnia 07:43, 21 sie 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Wstrzykiwanie zależności przez konstruktor

Wstrzykiwanie zależności przez konstruktor


Kolejne dwa sposoby rozwiązywania zależności stanowią istotną zmianę w stosunku do poprzedniej metody. Wyszukiwanie zależności nakładało na komponent obowiązek samodzielnego spełnienia swoich zależności, natomiast rola kontenera sprowadzała się do utrzymywania rejestru komponentów i dostarczenia obiektu kontekstu komponentowi implementującemu interfejs Serviceable .

Wstrzykiwanie zależności, bez względu na użytą technikę, zmienia ten stan rzeczy. Komponent, zamiast samodzielnie zdobywać potrzebne zasoby, jedynie deklaruje potrzebę ich wykorzystania w sposób, który jest czytelny dla kontenera i pozwala mu rozwiązać zależności w imieniu tego komponentu. Odpowiedzialność za dostarczenie zależności jest przeniesiona na kontener.

W przypadku wstrzykiwania przez konstruktor deklaracją taką są listy parametrów konstruktorów. Aby utworzyć instancję komponentu, kontener musi dostarczyć obiekty, które mogą posłużyć jako implementacje tych parametrów, i przekazać je do konstruktora tego komponentu. Jeżeli korzystając z zarejestrowanych komponentów nie może tego uczynić, wówczas utworzenie komponentu zależnego także nie jest możliwe i jest zgłaszane w postaci wyjątku. W przypadku gdy komponent posiada wiele konstruktorów, z zasady kontenery próbują utworzyć go korzystając z konstruktora najbardziej specyficznego (tj. o najdłuższej liczbie parametrów), którego zależności mogą rozwiązać.

Najważniejszą cechą tej techniki jest zapewnienie spójnego stanu komponentu w każdym momencie jego istnienia (co jest jednym z warunków tzw. dobrego obywatelstwa ), także bezpośrednio po wywołaniu konstruktora przez komponent. Ceną za uzyskanie tej własności jest brak możliwości zrealizowania zależności cyklicznych, tj. takich, w których komponenty zależą od siebie wzajemnie.


<< Poprzedni slajd | Spis treści | Następny slajd >>