Eclipse plugin 使用Eclipse插件实现不同的输出文件格式

Eclipse plugin 使用Eclipse插件实现不同的输出文件格式,eclipse-plugin,Eclipse Plugin,我有一个现有的程序,我们开发了一大套Eclipse插件。其中一个插件负责读取内部信息并生成一个输出文件,该文件将馈送到另一个系统 此输出文件的格式在受控文档中完全指定 现在我需要扩展这个应用程序来输出这种格式的新版本,但我不想失去输出旧版本的能力。这两者非常相似,我可以用几个“if”语句来逃避,但这不是面向对象的方式 似乎我应该有一个提供新文件格式的新插件,然后以某种方式使用扩展点来查找实现所请求格式的插件。一种方法是将扩展点的名称编码为格式ID 然后我必须以某种方式配置这个特定程序想要使用的格

我有一个现有的程序,我们开发了一大套Eclipse插件。其中一个插件负责读取内部信息并生成一个输出文件,该文件将馈送到另一个系统

此输出文件的格式在受控文档中完全指定

现在我需要扩展这个应用程序来输出这种格式的新版本,但我不想失去输出旧版本的能力。这两者非常相似,我可以用几个“if”语句来逃避,但这不是面向对象的方式

似乎我应该有一个提供新文件格式的新插件,然后以某种方式使用扩展点来查找实现所请求格式的插件。一种方法是将扩展点的名称编码为格式ID

然后我必须以某种方式配置这个特定程序想要使用的格式


人们有什么可以建议的最佳实践吗?Eclipse是一个如此庞大的平台,有几十种方法可以做事情,但并不总是一个明确的赢家。

以下是我的结论

我们已经有了一个名为ImplProvider的东西,它为扩展点提供了一个简单的抽象。给它一个要搜索的扩展点,它将找到扩展该点并实例化所描述类的人。非常典型的日食

我通过允许用户传入属性映射来扩展它。扩展点定义包含一个名为“identifier”的新元素,当它搜索匹配的扩展点时,“identifer”部分必须包含您要求的所有属性

所有“导出器”都在该方法中实现,并定义两个属性:“icd”和“类型”。“icd”代表接口控制文件。。。您可以想象它的值类似于“HTML5”、“RFCxxxx”,或者在我的例子中,是分配给描述文件格式的文档的公司专有编号。这里有“type”字段,因为有时候一个ICD可能定义多种文件格式,所以您需要某种方法来选择一种


因此,现在当我想要输出文件时,我可以查找首选ICD,或者让产品指定要使用的ICD。实际执行输出的类是通过这种机制查找的。

以下是我的结论

我们已经有了一个名为ImplProvider的东西,它为扩展点提供了一个简单的抽象。给它一个要搜索的扩展点,它将找到扩展该点并实例化所描述类的人。非常典型的日食

我通过允许用户传入属性映射来扩展它。扩展点定义包含一个名为“identifier”的新元素,当它搜索匹配的扩展点时,“identifer”部分必须包含您要求的所有属性

所有“导出器”都在该方法中实现,并定义两个属性:“icd”和“类型”。“icd”代表接口控制文件。。。您可以想象它的值类似于“HTML5”、“RFCxxxx”,或者在我的例子中,是分配给描述文件格式的文档的公司专有编号。这里有“type”字段,因为有时候一个ICD可能定义多种文件格式,所以您需要某种方法来选择一种

因此,现在当我想要输出文件时,我可以查找首选ICD,或者让产品指定要使用的ICD。通过此机制查找实际执行输出的类