-1

我打算使用java应用程序实现一个过程。该过程有不同的阶段。每个阶段都有一个输入和输出。

所以它类似于 input1=>phase1=>outpu1=>phase2=>output2=>phase3=>final_output

我想编写一个 java 应用程序,用户可以在其中扩展任何阶段来实现自己的功能。

例如:假设 phase1 对给定的输入进行排序。我想让我的应用程序用户创建将替换阶段1 功能的自定义类。他们可能想要计数而不是排序。

关于如何做到这一点的任何想法?插件架构?任何以类似方式工作的框架示例?从哪儿开始?编辑:输入来自用户。让我们说我的应用程序需要一组数字并进行排序(阶段1)然后删除重复项(阶段2)和添加(阶段3)并给出输出。现在我希望这些阶段是可定制的。可能是通过允许他们定义自己的类来做其他事情。

4

3 回答 3

2

我认为您的问题过于笼统,无法提供框架。话虽如此,您可以看一下策略模式(更多信息在这里)。

该模式的目的是定义行为,然后将这些行为作为方法参数传递。这将允许您使用一种方法来执行多项操作,具体取决于您传递的参数类型。

但是请注意,在我看来,使用相同的方法进行排序和计数会导致问题。理想情况下,每种方法至少应该执行一些类似的操作,因此对于排序,您可以使用进行升序和降序排序的方法,然后使用另一种方法进行计数。

于 2012-06-20T10:04:33.153 回答
1

你的问题太模糊了,你可以通过使用一种方法的通用接口来实现这一点。

“阶段”或阶段不能同时发生是否有特殊原因?

或者您可以实现更复杂的东西,例如基于 JMS 的框架或使用SEDA之类的东西

于 2012-06-20T10:01:26.353 回答
1

解决方案的想法: Phase 将是一个带有 process() 方法的接口,可以用任何算法实现。这个 process() 方法可以有一个 Output 返回类型,并以另一个 Output 作为参数,而 Output 另一种类型(类或接口)。还有一个 Executor 类,它将执行整个过程,使用一个使用阶段列表的 execute() 方法,使用每个阶段的返回输出作为下一个阶段的输入。唯一悬而未决的问题是:第一阶段的输入是什么?

于 2012-06-20T10:03:18.810 回答