私は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
ワーカーチェーンは非常に長く、4人のフレームワークワーカーで、その下に任意の数のユーザー定義ワーカーがあります。ですから、私はプロセス、サブプロセス、サブプロセス、サブサブプロセスを持っています...私はそれが単純でエレガントな解決策ではないと思います。 – Jonathan