这个是我经常使用的重构。这个结合模板设计模式更好理解
你有一些子类,其中相应的某些函数一相同的顺序执行类似的操作,但各个操作的细节有所不同
重点
某些子类有相同的代码执行顺序
比如类B
init();
doGetFromDb();
doPostProcess();
doSendToDownstream();
然后类B
init();
doGetFromDb();
doPostProcess();
doSendToDownstream();
这个时候先把代码都提取到超类中,这个超类一般是抽象的
class abstractBaseClass{
public void process(){
init();
doGetFromDb();
doPostProcess();
doSendToDownstream();
}
abstract void doGetFromDb();
abstract void doPostProcess();
abstract void doSendToDownstream();
}
然后子类自需要实现那些抽象方法即可。