强制派生实现做某事,最佳做法是什么?

时间:2013-02-05 12:15:45

标签: java oop design-patterns

我甚至不确定这个问题是否有答案\应得设计,但值得一提...... 我有一个抽象类(servlet)从一些客户端获取数据(其中包括)processResults方法(抽象)和onResultsReceived(非抽象)

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

我onDataReceived方法我正在为processData方法的所有实现做一些必要的常见事情。如果明天有人会添加dataServlet的新实现,我想确保他将在他的processData实现中调用onDataReceived。 有没有办法,已知设计这样做?

1 个答案:

答案 0 :(得分: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() { ... }
}