我有一个层次结构的worker
类,所有这些都对工件进行某种处理。这个想法是,每个工人做一些预处理,将工件推到子类,然后做一些后处理:
public void process(Workpiece wp) {
doPreprocessing(wp);
sub.process(wp); // this obviously doesn't work
doPostProcessing(wp);
}
现在我通过声明新的抽象方法来解决这个问题:
public final void process(Workpiece wp) {
doPreprocessing(wp);
subProcess(wp); // this obviously doesn't work
doPostProcessing(wp);
}
protected abstract void subProcess(Workpiece wp);
这有一个明显的缺点,即对于每个层次结构级别,都有一个额外的新方法。
我想保证,即使使用不受我控制的新的、用户实现的工作人员,也会执行所有预处理和后处理方法。
你会怎么做?