クラスの階層があり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);
これには、階層レベルごとに追加の新しいメソッドがあるという明らかな欠点があります。
すべての前処理および後処理メソッドが、私の制御下にない新しいユーザー実装ワーカーでも実行されることを保証したいと思います。
どうやってそれをしますか?