我自己的Java应用程序,可以自定义

时间:2012-06-20 09:57:18

标签: java architecture customization extends plugin-architecture

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

我认为你的问题过于笼统,无法提供框架。话虽如此,您可以查看Strategy Pattern(更多here)。

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

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

答案 1 :(得分:1)

你的问题是如此模糊,你可以通过一个方法的公共接口实现这一点。

为什么“阶段”或阶段不能同时发生有特殊原因吗?

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

之类的东西

答案 2 :(得分:1)

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