[英]Return values from eclipse plug-ins through extension points?
我在这里有一个Extensionpoint指向一个接口:
public interface IModelProcessor {
public void processModel(Object diagramModel);
}
因此,每个想要使用Extensionppoint的插件都必须为IModelProcessor提供processModel(Object diagramModel)。 我的问题是:
现在如何从实现此扩展点的eclipse插件中获取返回值? 我当然可以使用返回值,像这样:
public ReturnContainer processModel(Object diagramModel);
但是因为不是每个插件都会提供返回值,所以我必须制定约定,在这种情况下插件应该返回null,这在我看来相当脏。 你怎么想的:
public void processModel(Object diagramModel, Observer returnObserver);
因此,每个想要传递返回值的插件都可以注册Observer(ofc,插件必须是Observable)并在其上调用update方法。 你怎么看?
这实际上取决于您希望合同的外观。 一般来说,我觉得使用返回值比使用你提到的Observer选项更直观。 通常我会使用返回值,并在发生错误时引发异常。 您也可以让每个插件返回一个对象,即使所述对象是“空”。 从插件返回值没有什么特别之处,只要所有插件都可以访问您要返回的类。
我能想到一些选择。
如何在接口中添加getMyValue()
方法。 然后它必须默认通过抽象超类返回null。 如果确实有要返回的值,则该类将重载get方法并返回有效值。
在Eclipse中,以这种方式使用抽象超类为不使用它们的子类设置方法的默认处理是非常普遍的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.