我有一个worker
类的层次结构,所有这些类都对工件进行某种处理。我们的想法是,每个工人做一些预处理,推动工件的子类,然后做一些后处理:使用templatemethod模式实现工作链?
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);
,它具有明显的缺点,即对于每个层次级别,都有一个额外的新方法。
我想保证所有的前处理和后处理方法都是在新的,用户实现的工人的情况下执行的,这些工人不在我的控制之下。
你会怎么做?
我不认为我遵循:你目前的解决方案有什么问题? – amit 2012-03-08 11:31:44
工人链相当长,四名框架工人和他们下面的任意数量的用户定义的工人。所以我有进程,子进程,subsubprocess,subsubsubprocess ...我不认为这是一个简单或优雅的解决方案。 – Jonathan 2012-03-08 12:02:57