Pobieranie instancji komponentów na żądanie

Infrastruktura komponentowa umożliwia instancjom komponentów pobieranie na żądanie obiektów reprezentujących inne komponenty. Zakłada się, że klasy takich komponentów muszą implementować interfejs IComponentProviderAware, dzięki czemu, podczas tworzenia ich instancji, mają automatycznie wstrzykiwany (za pomocą kontenera IoC) obiekt typu IComponentInstanceProvider. Wstrzyknięty obiekt dostarcza metody wykorzystujące kontener IoC, które umożliwiają pozyskanie instancji innego komponentu za pomocą zarejestrowanej wcześniej nazwy lub typu. Dostarcza on zatem funkcjonalność wzorca Service Locator 1. Jednak implementacja wzorca Service Locator zakłada, że obiekt odpowiedzialny za dostarczanie innych instancji klas jest singletonem. Natomiast w przedstawionym rozwiązaniu do instancji komponentów mogą być wstrzykiwane różne obiekty typu IComponentInstanceProvider, dlatego żądanie dostarczenia obiektu może kończyć się zwróceniem obiektów różnych typów lub nawet komunikatem o nieznalezieniu żądanego obiektu.


1 Core J2EE Patterns - Service Locator (http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceLocator.html)