2009-07-07 8 views
1

Ich habe ein bestehendes Programm, das wir als eine große Anzahl von Eclipse-Plugins entwickelt haben. Eines der Plug-Ins ist dafür verantwortlich, interne Informationen zu lesen und eine Ausgabedatei zu generieren, die einem anderen System zugeführt wird.Verwenden von Eclipse-Plug-ins zum Implementieren eines anderen Ausgabedateiformats

Das Format dieser Ausgabedatei ist vollständig in einem kontrollierten Dokument angegeben.

Jetzt muss ich diese Anwendung erweitern, um eine neuere Version dieses Formats auszugeben, aber ich möchte nicht die Fähigkeit verlieren, die alte Version auszugeben. Die beiden sind ähnlich genug, dass ich mit ein paar 'if' Statements davonkommen könnte, aber das ist nicht die OO-Art.

Es scheint, als ob ich ein neues Plug-in haben sollte, das das neue Dateiformat bereitstellt, und dann irgendwie einen Erweiterungspunkt verwendet, um ein Plug-in zu finden, das das angeforderte Format implementiert. Ein Ansatz wäre, dass der Name des Erweiterungspunkts die Format-ID codiert.

Dann muss ich in irgendeiner Weise konfigurieren, welches Format dieses bestimmte Programm verwenden möchte.

Gibt es Best Practices, die man vorschlagen kann? Eclipse ist eine so große Plattform, dass es Dutzende Möglichkeiten gibt, Dinge zu tun und nicht immer ein klarer Gewinner.

Antwort

1

Hier ist, was ich endete.

Wir hatten schon etwas namens ImplProvider, das eine einfache Abstraktion für Erweiterungspunkte bot. Geben Sie ihm einen Erweiterungspunkt, nach dem gesucht werden soll, und es würde jemand finden, der diesen Punkt erweitert und die beschriebene Klasse instanziiert. Ziemlich typische Eclipse.

Ich erweitert, dass der Benutzer eine Karte von Attributen übergeben kann. Die Erweiterungspunktdefinition enthält ein neues Element namens "identifier", und wenn es nach einem übereinstimmenden Erweiterungspunkt sucht, muss der Abschnitt "identifer" alle Attribute enthalten, nach denen Sie gefragt haben.

Alle "Exporteure" sind in dieser Methode implementiert und definieren zwei Attribute: "icd" und "type". "icd" steht für Interface Control Document ... man könnte sich vorstellen, dass es Werte wie "HTML5", "RFCxxxx" oder in meinem Fall eine unternehmenseigene Nummer, die dem Dokument zugeordnet ist, das das Dateiformat beschreibt. Das Feld "Typ" ist dort, weil ein ICD manchmal mehrere Dateiformate definieren kann. Sie müssen also einen Weg finden, um einen auszuwählen.

Wenn ich jetzt eine Datei ausgeben möchte, kann ich den bevorzugten ICD nachschlagen oder das Produkt den zu verwendenden ICD angeben lassen. Die Klasse, die tatsächlich die Ausgabe ausführt, wird durch diesen Mechanismus nachgeschlagen.

Verwandte Themen