【发布时间】:2014-05-09 22:44:58
【问题描述】:
我正在构建一个基于插件的应用程序。插件通过共享消息总线进行通信。出于几个明显的原因,包括保证类型安全,我最终编写了类似这样的代码:
public class OtherPluginController {
...
public void doSomething(int intParam, String stringParam) {
Command cmd = new Command();
cmd.target = "OtherPlugin";
cmd.name = "doSomething";
cmd.params.put("intParam", intParam);
cmd.params.put("stringParam", stringParam);
MessageBus.emit(cmd);
}
...
}
为了可扩展性和可维护性,现在从某种清单文件创建这些控制器会很棒,例如上面的示例,并使用 XML,类似
<Plugin name="OtherPlugin">
...
<Command name="doSomething">
<Parameter name="intParam" type="int"/>
<Parameter name="stringParam" type="String"/>
</Command>
...
</Plugin>
尽管有很多基于模板的框架,但它们中的大多数似乎都针对不同的用例。有没有我错过的框架?如果没有,是否有一个我至少可以滥用这种事情的框架?
【问题讨论】:
-
您是否尝试过protobuf 来定义您的消息?
-
protobuf 是一个序列化问题的框架。即使我想在消息总线上使用序列化字节流而不是 POJO,protobuf 也无法帮助我解决手动将方法名称和参数分配给消息对象的问题。
-
protobuf 包含一个代码生成器,可以为您编写消息 POJO。
-
明确一点:我不想自动生成第一个sn-p中显示的
Command对象的不同版本,我想自己生成第一个代码sn-p。在我看来,protobuf 做不到。 -
您可以使用 Xtext 编写自己的代码生成器。 eclipse.org/Xtext/documentation.html#TutorialCodeGeneration 。看一看。也许它符合您的需求。
标签: java code-generation