新增介面

只要將物件的新類型用 org.eclipse.core.component.types 延伸點進行登錄,便可將該類型傳送到組件的建構子。這時,我們應該先介紹元件這個詞彙。凡藉由將引數注入建構子中的方式所延伸建立出來的物件,我們皆可稱之為元件。 如新樣式的組件也可算是元件的一種,但也有其他的元件類型。

下列範例顯示延伸的範例類型。本例指定要在組件的網站上使用 INameable 介面。

<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" 表示會針對每一個組件建立一個實例。