Obiektowy model konfiguracji

Obiektowy model konfiguracji opisuje dowolną strukturę połączonych komponentów wraz z zależnościami między nimi wykorzystując do tego definicje. Model wyróżnia 4 reprezentacje komponentów: jako obiekty dowolnego typu oraz za pomocą 3 rodzajów kolekcji (lista, zbiór, mapa).

Rysunek 1. Implementacja obiektowego modelu konfiguracji

Rysunek przedstawia diagram klas modelu konfiguracji. Wspólnym interfejsem dla wszystkich rodzajów definicji jest interfejs IComponentDefinition. Każda definicja posiada:

Poza opisem komponentu, definicja udostępnia mechanizm tworzenia jego instancji. Służy do tego metoda createInstance, która odpowiedzialna jest za dostarczenie instancji komponentu wraz z zainicjalizowanymi wszystkimi komponentami zależnymi.

Definicje komponentów zagregowane są w obiekcie typu Configuration, który reprezentuje pojedynczą konfigurację stworzoną przez użytkownika.

ComponentDefinition

ComponentDefinition oprócz opisanych wcześniej elementów posiada dodatkowo:

Definicje kolekcji

Definicje kolekcji zawierają natomiast kontenery obiektów IValueProvider, które posłużą do ,,wypełnienia'' tworzonych kolekcji odpowiednimi instancjami. ListDefinition oraz SetDefinition posiadają mapy elementów, gdzie kluczem jest obiekt typu IValueProvider, a wartością dodatnia liczba wystąpień w kolekcji. Takie rozwiązanie umożliwia tworzenie wielu instancji tego samego typu w kolekcjach.

Definicja mapy posiada listę obiektów MapItem, które składają się klucza i wartości typu IValueProvider każda.