<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>
Атрибут initializer показывает,
где будет использоваться интерфейс. К примеру, строка "org.eclipse.ui.part.SiteInitializer"
означает, что интерфейс используется компонентом. Если же интерфейс должен быть реализован компонентами, следует использовать строку "org.eclipse.ui.part.PartInitializer".
Атрибут interface задает имя
интерфейса. Оно должно в точности соответствовать типу, который передается
конструктору компонента. Если тип расширения не совпадает с типом, который принимает компонент,
то это расширение не будет использоваться компонентом.
Атрибут implementation определяет реализацию
интерфейса по умолчанию. Он указывает либо на класс, реализующий интерфейс,
либо на "фабрику компонентов" (ComponentFactory), которая может их создавать.
Дополнительная информация находится в разделе, который относится к ComponentFactory. Такой подход
используется для того, чтобы удовлетворять зависимости в тех случаях, когда компонент запрашивает
интерфейс, который не может быть найден в его родительском контексте. Все интерфейсы должны предоставлять реализацию
по умолчанию. Правильно созданный компонент всегда будет работать в данной области,
вне зависимости от того, сколько зависимостей возникает в родительском контексте.
Реализация не может переопределять или дополнять атрибуты интерфейса,
добавляя новые интерфейсы. Другие компоненты могут зависеть от зарегистрированного интерфейса данного
компонента, но не напрямую от реализации.
Атрибут singleton показывает, является ли
реализация по умолчанию единственной. Если указано значение true, то будет создан только один
экземпляр, который будет работать со всеми компонентами. Если указано значение false,
то для каждого контейнера, запрашивающего интерфейс, будет создаваться новый экземпляр. Например,
если используются компоненты и указано значение singleton=:"false", то для каждого компонента
будет создан свой экземпляр интерфейса.