2009-07-07 8 views
1

나는 우리가 Eclipse 플러그인의 큰 세트로 개발 한 기존 프로그램을 가지고있다. 플러그인 중 하나는 내부 정보를 읽고 다른 시스템에 공급되는 출력 파일을 생성합니다.Eclipse 플러그인을 사용하여 다른 출력 파일 형식 구현하기

이 출력 파일의 형식은 제어되는 문서에서 완전히 지정됩니다.

이제이 형식의 새 버전을 출력하려면이 응용 프로그램을 확장해야하지만 이전 버전을 출력하는 기능을 잃고 싶지는 않습니다. 이 둘은 충분히 유사하여 두 가지 if 문으로 도망 갈 수 있지만 OO 방식은 아닙니다.

새 파일 형식을 제공하는 새 플러그 인을 가지고 있어야하며, 그런 다음 어떻게 든 확장 점을 사용하여 요청한 형식을 구현하는 플러그 인을 찾습니다. 한 가지 방법은 확장 점의 이름을 형식 ID로 인코딩하는 것입니다.

그런 다음이 특정 프로그램을 사용하려는 형식으로 구성해야합니다.

사람들이 제안 할 수있는 모범 사례가 있습니까? 이클립스는 수십 가지 방법으로 항상 명확한 승자가 아닌 커다란 플랫폼입니다.

답변

1

다음은 내가 마지막으로 결론을 내 렸습니다.

우리는 이미 ImplProvider라고하는 somethng를 가졌습니다.이 기능은 확장 점에 대한 손쉬운 추상화를 제공했습니다. 검색 할 확장 점을 지정하면 누군가이 해당 지점을 확장하고 설명 된 클래스를 인스턴스화합니다. 꽤 전형적인 Eclipse.

사용자가 속성 맵을 전달할 수 있도록 확장했습니다. 확장 점 정의에는 "identifier"라는 새 요소가 포함되어 있으며 일치하는 확장 점을 검색 할 때 "identifer"섹션에는 사용자가 요청한 모든 특성이 포함되어야합니다.

모든 "수출업자"는이 방법으로 구현되며 "icd"및 "유형"의 두 가지 속성을 정의합니다. "icd"는 Interface Control Document의 약자로, "HTML5", "RFCxxxx"또는 내 회사의 파일 형식을 설명하는 문서에 할당 된 독점 번호와 같은 값일 수 있습니다. ICD가 여러 파일 형식을 정의 할 수 있기 때문에 "유형"필드가 있으므로 선택할 방법이 필요합니다.

이제 파일을 출력하고 싶을 때 기본 ICD를 찾거나 제품에서 사용할 ICD를 지정할 수 있습니다. 실제로 출력을 수행하는 클래스는이 메커니즘을 통해 조회됩니다.

관련 문제