一、对应实体
public class DiffVo {
private ArmDifTableNameEnum difEnum;
private Long id;
private XXXX vo;
}
public enum ArmDifTableNameEnum {
PAY_BALANCE("payStrategy"),
PRODUCT_BALANCE("proudStrategy");
private final String value;
ArmDifTableNameEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
public interface IDifHandler {
difInfo(DiffVo vo);
}
二、入口service
@Service
public class ArmDifService {
@Autowired
Map<String, IDifHandler> iDifHandler;
public void difInfo(DiffVo vo) {
armDifReviewVO = iDifHandler.get(vo.getArmDifTableNameEnum().getValue()).difInfo(vo);
}
}
三、抽象类(模板方法)
@Slf4j
@Component
public abstract class ArmDifAbstract {
public void start(DiffVo vo){
switch (vo.XXX.xxx){
case "choose1": function1(vo);break;
case "choose2": function2(vo);break;
}
function1(vo);break;
function2(vo);break;
}
private void function1(DiffVo vo){
}
public abstract void function2(DiffVo vo);
protected abstract void function3();
}
四、抽象类实现
@Service("payStrategy")
public class PaysStrategy extends ArmDifAbstract implements IDifHandler {
@Override
public ArmDifReviewVO difInfo(ArmDifVO vo) {
return this.start(vo);
}
@Override
public abstract void function2(DiffVo vo);
@Override
protected abstract void function3();
}
@Service("ProudStrategy")
public class ProudsStrategy extends ArmDifAbstract implements IDifHandler {
@Override
public void difInfo(ArmDifVO vo) {
this.start(vo);
}
@Override
public abstract void function2(DiffVo vo);
@Override
protected abstract void function3();
}