我正在实现一个具有如下方法的服务类:
public void makeSomething() {
// some logic...
// [optional logic]
// some other logic...
}
这是一个具体的类,它可以“按原样”实例化和使用,但有时我需要扩展它并覆盖 makeSomething()
方法添加一些额外的逻辑(在中间)。我的意思是:我需要在父方法中使用相同的逻辑,但我需要在返回之前扩展逻辑。
我的第一个想法是在原始方法的中间添加一个“可选”方法:
public void makeSomething() {
// some logic...
optionalOperation();
// some other logic...
}
并最终覆盖扩展类中的 optionalOperation()
方法。但我不喜欢这样:我将有一个空方法在我原来的类中什么也不做......
那么,有没有更好的方法来设计我的方法呢?是否有一些设计模式可以解决我的问题?
最佳答案
设计模式称为Template method恐怕它的工作方式与您不喜欢的完全不同。
例如,Spring 的代码充满了这样的空protected
方法,等待您向其中添加自定义的东西。
关于java - 部分覆盖方法 : how to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22456970/