我需要实现两个类似的过程,它们基本上执行相同的逻辑,但一些参数/方法可能会有所不同。我想知道将主要逻辑提取到父类并将一些方法的结果指定给子类是否是一个好习惯。就像是:
abstract class Parent{
protected CommonDao commonDao;
protected String specStatus;
protected abstract int getDbResult();
public Parent(CommonDao commonDao){
this.commonDao = commonDao;
}
public String mainLogic(){
if(commonMethod()){
//..
}
int specDbResult = getDbResult();
//some logic here
return specStatus;
}
private boolean commonMethod(){
//..
return true;
}
}
@Service
public Child1 extends Parent(){
@Autowired
public Child1(CommonDao commonDao){
super(commonDao);
super.specStatus = specStatus1;
}
@Override
protected String getDbResult(){
commonDao.getResult1();
}
}
@Service
public Child2 extends Parent(){
@Autowired
public Child2(CommonDao commonDao){
super(commonDao);
super.specStatus = specStatus2;
}
@Override
protected String getDbResult(){
commonDao.getResult2();
}
}
如果它似乎不是一个干净的代码,在这种情况下你会推荐什么解决方案?提前致谢