【发布时间】:2014-09-12 18:53:58
【问题描述】:
场景
Web 服务从其他系统接收 XML 形式的请求,基于该请求的内容,Web 服务应该执行任意数量的用户可定义的任务(例如将 XML 的内容存储到数据库、提取某些值,调用其他服务等)。请求系统的行为无法更改(例如,为不同的事情调用不同的操作)。
提议的设计
我提议的设计是有一个类似...的界面。
interface PipelineTask {
public void Run(String xml);
}
为每个用户操作执行此操作,例如...
public class LogToDatabaseTask implements PipelineTask {
public void Run(String xml) {
db.store(xml); // some call to database to store.
}
}
然后是一个包含规则(可能是 XPath 表达式)的数据库表,以及在接收到的文档满足这些规则时要调用的类。然后我会使用反射——或者可能是工厂(?)——来调用正确的实现并运行它。
问题
对我来说,听起来应该有某种现有的模式来实现这样的东西,我错过了,在网上任何地方都找不到。这种方法是否有意义 - 还是有更好、或许更灵活的方法?
【问题讨论】:
标签: java reflection architecture