2011-04-17 61 views
1

你会如何建议实施以下方案。我有几个想法,但没有一个能够完全满足我的问题,所以我想获得您的意见。如何在Java中公开动态的方法调用列表?

我正在构建一种工作流程应用程序。用户创建了需要执行的活动流水线。我面临的问题是这样的。流水线中的每个“小部件”必须定义它可以接受的输入以及它将作为输出产生的内容。它可以接收任意数量的输入“流”,也可以产生多个输出流。现在出现问题。这些需要动态的。例如,某人应该可以为应用程序编写一个插件,用于定义他自己的小部件,并提供输入和输出。但其他小部件需要能够连接到它,以便它们可以将它们的输出发送到新的小部件,或从其接收输入。

我们应该如何首先展示可接受的输入和输出的列表,其次,我该如何计算在窗口小部件上调用哪个方法。例如,如果我想从我的小部件发送输出到新的,我需要能够计算如果有一个可接受的接收方法(在这种情况下可能有多个),其次,我需要知道调用数据的方法。

我已经看过闭包,代表等,这似乎能够做我需要的东西。只是想我会先获得更多的信息。

谢谢。

回答

2

我建议您强制执行,所有组件都实现一个或多个接口,以允许其他组件和框架使用这些接口来询问组件可以发送的内容以及可以接收的内容。

这将使您的代码更健壮,并且需要更少的魔法才能工作。

+0

您如何看待以下内容?我认为我会做的,是与任何第三方签订合同,并且要求他们返回我定义的Wrapper类的集合。这个包装器基本上包含了一些元数据,包括它公开的方法名称和参数。然后我可以通过反射来访问它。 – 2011-04-18 07:13:19

+0

请勿使用反射。改用接口。 – 2011-04-18 07:23:18

+0

有什么理由不使用反射?这很简单。而且这些电话很少发生,所以表演不应该成为问题。或者我错过了什么? – 2011-04-18 09:11:56

1

看看消息驱动架构和Mule ESB。