当我想使用模板方法模式时,我经常遇到这种情况,但是模板方法需要不同类型的参数,如下所示:
public abstract class AbstractFoo {
public void process(TypeA a, TypeB b) {
//do common processing
if (b == null) {
doProcess(a);
} else if(a == null) {
doProcess(b);
}
}
public abstract void doProcess(TypeA a);
public abstract void doProcess(TypeB b);
}
这看起来不太好。提供的参数之一必须为空,并且所有服务都必须为其他类型实现虚拟 doProcess 方法。有没有更好的模式呢?你怎么处理这个?我不想使用构造函数,因为这些服务是 spring bean。同样的问题也适用于策略模式。