<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>
El atributo initializer indica
dónde se utilizará la interfaz. Por ejemplo, la serie "org.eclipse.ui.part.SiteInitializer" quiere decir que la
interfaz se utiliza en el sitio de un componente. También podría haberse utilizado "org.eclipse.ui.part.PartInitializer" si la
interfaz estuviera pensada para que los propios componentes la
implementaran.
El atributo interface es el nombre
de la interfaz. Debe coincidir exactamente con el tipo que el componente recibirá en su
constructor. Si se crea una extensión que proporcione series y un componente
solicita un objeto, no utilizará esta extensión aunque se trate de un tipo
compatible.
El atributo implementation
identifica la implementación por omisión de la interfaz. Apunta a una clase de componentes que implementa la interfaz o un
ComponentFactory que puede crearlos; para obtener información adicional,
consulte la sección referida a ComponentFactory. Esta implementación se utiliza
para satisfacer una dependencia siempre que un componente solicita esta
interfaz y ésta no se encuentra en su contexto padre. Todas las interfaces deben proporcionar una implementación por omisión. Esto quiere decir que un componente escrito correctamente funcionará siempre en
un ámbito determinado, independientemente de cuántas dependencias proporcione
su contexto padre. La implementación no puede alterar temporalmente ni ampliar el atributo de
interfaz implementando interfaces adicionales. Otros componentes pueden depender de este componente a través de su interfaz
registrada, pero no pueden depender directamente de la clase de implementación.
El atributo singleton indica si la
implementación por omisión es monoinstancia. Si el valor es true, se creará una sola instancia que se compartirá entre todos
los demás componentes que la necesiten. Si el valor es false, se creará una instancia nueva para cada contenedor que la
necesite. Por ejemplo, en el caso de los componentes, singleton=:"false" quiere decir que se
creará una instancia para cada componente.