【发布时间】:2013-01-27 22:35:56
【问题描述】:
我要设计像Filters这样的实体,用Filter接口表示,声明apply(Content content)方法,可以应用于Content对象。过滤器可以在链中组合在一起,类似于工作流,但它们是动态的。例如,如果FilterA返回X,那么我将应用filterB,而接收结果Y将导致应用FilterC。过滤器链是特定于应用程序的,我还没有决定如何允许构建过滤器链。
我会以与某些工作流框架相同的方式设计此行为:管理器组件遍历过滤器列表,并在每个过滤器上调用 filter.apply(content)。但是如何允许像 if/else 语句这样的动态呢?
现在我构思了一个 Workflow 或 FilterChain 接口,声明一个 getNextFilter(previousResult)。实现这个接口可以声明一个特定于应用程序的工作流。但是 Workflow 接口的实现会很无聊:跟踪当前步骤(整数?),然后在每次 getNextFilter() 调用时,通过 switch/case 语句确定下一个过滤器?!?
哪种解决方案可能更好?如何声明一个链?
我用的是Java和Spring,所以可以用IoC。
【问题讨论】:
标签: java spring oop design-patterns