새 인터페이스 추가

새 오브젝트 유형을 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 섹션을 참조하십시오. 이 구현은 컴포넌트가 이 인터페이스를 요청하고 그의 상위 컨텍스트에서 찾을 수 없을 때마다 종속성을 만족하는 데 사용됩니다. 모든 인터페이스는 기본 구현을 제공해야 합니다. 이는 올바르게 작성된 컴포넌트는 항상 그의 상위 컨텍스트가 제공하는 종속성 수와 상관 없이 주어진 범위에서 작업함을 의미합니다. 구현은 추가 인터페이스를 구현하여 interface 속성을 대체하거나 확장할 수 없습니다. 다른 컴포넌트가 그의 등록된 인터페이스를 통해 이 컴포넌트에 종속할 수 있지만, 구현 클래스에 직접적으로 종속될 수는 없습니다.

singleton 속성은 기본 구현이 단독인지 여부를 표시합니다. true인 경우 단일 인스턴스가 작성되고 그것이 필요한 다른 모든 컴포넌트 사이에 공유됩니다. false인 경우 인스턴스가 필요한 각 컨테이너에 대해 새 인스턴스가 작성됩니다. 예를 들어 부분의 경우 singleton=:"false"는 모든 부분에 대해 하나의 인스턴스가 작성됨을 의미합니다.