AgE 2.5 : PrzeslanianieImplementacji

Przesłanianie implementacji

Przesłanianie implementacji umożliwia rozwiązanie tzw. problemu robot legs pojawiającego się kontekście kontenerów IoC. Bierze się on z konieczności instancjonowania wielu komponentów skonfigurowanych praktycznie identycznie (nogi robota), ale jednak różniących się między sobą kilkoma szczegółami (prawa/lewa stopa). Rozwiązaniem tego problemu jest możliwość tworzenia hierarchii kontenerów IoC. W korzeniu drzewa kontenerów rejestrowane są najbardziej ogólne komponenty, a w kolejnych jego poziomach - coraz bardziej szczegółowe. Wyszukiwanie komponentów odbywa się zawsze od użytego przez klienta kontenera w górę drzewa, aż do korzenia. Dzięki temu możliwe jest zasłanianie definicji komponentu przez inną definicję w kontenerze umieszczonym niżej w hierarchii.

Przykład hierarchii kontenerów pokazany jest na rysunku obok. W kontenerze głównym zarejestrowane są: komponent Comp, zależny od komponentu Dep typu IDep. Kontener główny posiada także dwa kontenery potomne, z których w każdym zerejestrowana jest inna wersja komponentu IDep - DepA i DepB. Żądanie udostępnienia referencji do komponentu Comp wykonane na kontenerze głównym zwróci komponent ze wstrzykniętą zależnością Dep, gdyż definicje obu tych komponentów są zarejestrowane w kontenerze. Natomiast to samo żądanie wykonane na jednym z kontenerów potomnych, np. A, zwróci komponent Comp ze wstrzykniętą zależnością DepA. Definicja komponentu Comp zostnie wyszukana w kontenerze nadrzędnym dla A, czyli kontenerze głównym, ale definicja IDep zostanie znaleziona bezpośrednio w kontenerze A jako DepA.

Przykład przesłaniania strategii jest opisany na stronie specyfikacja pliku konfiguracyjnego.

Attachments: