2013-02-05 65 views
0

我甚至不確定這個問題有一個答案\ sutiable設計,但它的價值要求... 我有一個抽象類(servlet)從一些客戶端獲取數據(其中包括)processResults方法(抽象)和onResultsReceived(不是抽象的)強制派生實現來做某些事情,最佳實踐是什麼?

public abstract class dataServlet implements HttpServlets { 
     protected onDataReceived(){//blah blah} 
     public abstract void processData(); 
} 

我onDataReceived方法我在做一些共同的東西,那就是對neccessary方法過程數據的所有實現。如果明天有人會添加dataServlet的新實現,我想確保他將在他的processData實現中調用onDataReceived。 有沒有什麼辦法,已知的設計這樣做?

回答

6

這聽起來像你應該考慮template method pattern,因爲它強制執行的特定順序,而不需要派生類的作者調用東西。

的模式是:

abstract class Base { 
    public doActivity() { 
     doCommonStuff(); 
     doSpecificStuff(); 
     doOtherCommonStuff(); 
     doOtherSpecificStuff(); 
    } 

    protected abstract void doSpecificStuff(); 
    protected abstract void doOtherSpecificStuff(); 

    private final void doCommonStuff() { ... } 
    private final void doOtherCommonStuff() { ... } 
} 
+0

對,忘了。謝謝! – axelrod