0

我什至不确定这个问题是否有答案\合适的设计,但值得一问......我有一个抽象类(servlet),它使用(以及其他)processResults方法(抽象)从一些客户那里获取数据,并且onResultsReceived(非抽象)

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

我的 onDataReceived 方法我正在做一些常见的事情,这些事情对于 processData 方法的所有实现都是必需的。如果明天有人会添加新的 dataServlet 实现,我想确保他会在他的 processData 实现中调用 onDataReceived。有什么方法,已知的设计可以这样做吗?

4

1 回答 1

6

听起来您应该考虑模板方法模式,因为它强制执行特定的顺序,而不需要派生类的作者调用东西。

模式是:

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() { ... }
}
于 2013-02-05T12:16:41.813 回答