我有一個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