<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>
L'attributo initializer indica dove verrà utilizzata l'interfaccia. Ad esempio, la stringa "org.eclipse.ui.part.SiteInitializer"
indica che l'interfaccia viene utilizzata in un sito di parti. Inoltre è possibile utilizzare
"org.eclipse.ui.part.PartInitializer"
se l'interfaccia è destinata alle stesse parti da implementare.
L'attributo interface è lo stesso attributo dell'interfaccia. Deve corrispondere esattamente al tipo che il componente riceverà nel rispettivo costruttore. Se è stata creata un'estensione che fornisce stringhe e un componente richiede un oggetto, non verrà utilizzata l'estensione
anche se fosse di tipo compatibile.
L'attributo implementation identifica l'implementazione
predefinita dell'interfaccia. Fa riferimento a una classe di componenti che implementa
l'interfaccia oppure a ComponentFactory che può crearli. Per ulteriori informazioni, fare riferimento
alla sezione ComponentFactory. Questa implementazione viene utilizzata per soddisfare una dipendenza ogni qual volta un
componente richiede questa interfaccia e non può essere trovata nel contesto principale. Tutte le interfacce devono fornire un'implementazione predefinita. Ciò significa che
un componente scritto correttamente funzionerà sempre in un determinato ambito, a prescindere dal numero
di dipendenze fornite dal contesto principale. L'implementazione non può sovrascrivere
o estendere l'attributo di interfaccia implementando interfacce aggiuntive. Gli altri componenti
possono dipendere da questo componente mediante la rispettiva interfaccia registrata, ma non
possono dipendere direttamente dalla classe di implementazione.
L'attributo singleton indica se l'implementazione
predefinita è un singleton. In caso affermativo, verrà creata una singola istanza e verrà condivisa
tra ogni altro componente che le necessita. In caso contrario, verrà creata una nuova istanza per
ciascun contenitore. Ad esempio, nel caso delle parti
singleton=:"false" indica che viene creata un'istanza per ciascuna parte.