如何在Java中实现类似于before_过滤器的方法?

如何在Java中实现类似于before_过滤器的方法?,java,design-patterns,Java,Design Patterns,我正在开发一个带有特定API的bespoken框架,现在我正在重新分解它 我必须解决的问题之一是创建一种类似路由的方法,根据查询深度和其他属性将查询重定向到不同的类。 方法如下: class Blah { public Object query1(){...} public Object query2(){...} } 我必须把它改成 class Blah implements BeforeFilter{ @Override protected void filter() { //decide

我正在开发一个带有特定API的bespoken框架,现在我正在重新分解它

我必须解决的问题之一是创建一种类似路由的方法,根据查询深度和其他属性将查询重定向到不同的类。 方法如下:

class Blah {
public Object query1(){...}
public Object query2(){...}
}
我必须把它改成

class Blah implements BeforeFilter{
@Override
protected void filter()
{
//decide to call which query method
//then redirect the request to query
}
public Object query1(){...}
public Object query2(){...}
}
执行上述想法的一种非常传统的方法是在每个query()方法中添加if/else来决定是否继续

老实说,我不喜欢这种方法。这就是为什么我要找更优雅的东西


注:这样做的原因不是为了改变公共API。我已经实现了代理设计模式,但这会改变一些API

对我来说,这听起来像是一种“类似路由”的方法,过滤器或链元素符合一个公共接口,您可以用类似于链表的不同方式来组装它们。查询/请求被传递到第一个链式元素,然后它将请求传递到其“下一个”链式元素,依此类推。每个链式元素或过滤器决定是否对请求/SQL等执行某些操作

这样,您就拥有了过滤机制,每个过滤器(或链式元素)都与其他过滤器(或链式元素)分离,不需要if-then-else阶梯。

我正在阅读Joshua Kerievsky的《模式重构》。在处理项目之前,值得一看。