<extension
point="org.eclipse.core.component.types">
<component
initializer="org.eclipse.ui.part.SiteInitializer"
interface="org.eclipse.ui.part.services.INameable"
implementation="org.eclipse.ui.internal.part.services.NullNameableService"
singleton="true"
/>
</extension>
Atrybut initializer wskazuje miejsce, w którym interfejs będzie używany. Na przykład łańcuch "org.eclipse.ui.part.SiteInitializer"
oznacza, że interfejs będzie używany w serwisie danej części. Użycie łańcucha "org.eclipse.ui.part.PartInitializer"
oznaczałoby, że interfejs będzie implementowany przez same części.
Atrybut interface stanowi nazwę interfejsu. Musi ona odpowiadać typowi, który dany komponent otrzyma w konstruktorze.
Jeśli utworzone rozszerzenie dostarcza łańcuchy, a komponent wymaga obiektów,
dane rozszerzenie nie zostanie użyte pomimo zgodności typów.
Atrybut implementation identyfikuje
domyślną implementację interfejsu. Wskazuje on albo na klasę komponentów, która
implementuje interfejs, albo na właściwość ComponentFactory, która może je utworzyć.
Aby uzyskać więcej informacji, patrz sekcja ComponentFactory. Ta implementacja
jest używana do spełnienia warunków zależności w przypadku, gdy komponent zażąda tego
interfejsu, a nie będzie można go znaleźć w kontekście nadrzędnym. Wszystkie
interfejsy muszą dostarczać domyślną implementację. Oznacza to, że poprawnie napisany
komponent będzie zawsze działał w danym zasięgu niezależnie od liczby zależności
dostarczanych przez kontekst nadrzędny. Implementacja nie może przesłonić ani rozszerzyć
atrybutu interface przez zaimplementowanie dodatkowych interfejsów. Inne komponenty
mogą zależeć od tego komponentu przez jego zarejestrowany interfejs, ale nie mogą
zależeć bezpośrednio od klasy implementacji.
Atrybut singleton wskazuje, czy domyślna
implementacja jest typem singleton. Jeśli atrybut ten ma wartość
true, zostanie utworzona tylko jedna implementacja, która będzie współużytkowana przez
wszystkie komponenty, które jej wymagają. Jeśli atrybut ten ma wartość
false, nowa implementacja zostanie utworzona dla każdego kontenera, który jej wymaga.
Na przykład w przypadku części łańcuch singleton=:"false" oznacza, że dla każdej części
zostanie utworzona tylko jedna implementacja.