我有一个现有的程序,我们已经开发了一大堆Eclipse插件。其中一个插件负责读取内部信息并生成输入到另一个系统的输出文件。
此输出文件的格式在受控文档中完全指定。
现在我需要扩展此应用程序以输出此格式的较新版本,但我不想失去输出旧版本的能力。两者足够相似,我可以通过几个'if'语句来逃避,但这不是OO方式。
好像我应该有一个新的插件提供新的文件格式,然后以某种方式使用扩展点来查找实现所请求格式的插件。一种方法是使扩展点的名称编码格式ID。
然后我必须以某种方式配置这个特定程序想要使用的格式。
是否有人建议的最佳做法? Eclipse是一个如此庞大的平台,有许多方法可以做到并且并不总是明显的赢家。
答案 0 :(得分:1)
这就是我最终的目标。
我们已经有了一些叫做ImplProvider的东西,它为扩展点提供了一个简单的抽象。给它一个搜索的扩展点,它会找到扩展该点的某人并实例化描述的类。非常典型的Eclipse。
我通过允许用户传入属性Map来扩展它。扩展点定义包括一个名为“identifier”的新元素,当它搜索匹配的扩展点时,“identifer”部分必须包含您要求的所有属性。
所有“导出器”都在此方法中实现,并定义了两个属性:“icd”和“type”。 “icd”代表接口控制文档...您可以想象它的值是“HTML5”,“RFCxxxx”,或者在我的情况下是分配给描述文件格式的文档的公司专有编号。 “类型”字段存在,因为有时ICD可能会定义多种文件格式,因此您需要一些方法来选择一种。
所以现在当我想输出文件时,我可以查找首选的ICD,或让产品指定要使用的ICD。通过这种机制查找实际执行输出的类。