1.工厂模式加策略模式实现动态选择类
public interface RefundIdentifyService {
CommonNotify toRefund(RefundModel refundModel);
}
//支付宝退款实现
@AllArgsConstructor
@Service
public class AliIdentifyService implements RefundIdentifyService {
private final RefundUtil refundUtil;
@PostConstruct
private void init() {
//注册类型
RefundIdentifyFactory.register(1, this);
}
@Override
public CommonNotify toRefund(RefundModel refundModel) {
//todo something
return new CommonNotify(false, response.getSubMsg());
}
}
//微信退款实现
@AllArgsConstructor
@Service
public class WxIdentifyService implements RefundIdentifyService {
private final RefundUtil refundUtil;
@PostConstruct
private void init() {
//注册类型
RefundIdentifyFactory.register(2, this);
}
@Override
public CommonNotify toRefund(RefundModel refundModel) {
//todo something
return refundUtil.wxRefund(wxRefund);
}
}
//设置工厂
public class RefundIdentifyFactory {
private static Map ocrFactory = new HashMap<>();
public static void register(Integer type, RefundIdentifyService refundIdentifyService) {
if (null != type) {
ocrFactory.put(type, refundIdentifyService);
}
}
public static RefundIdentifyService createObj(Integer type) {
return ocrFactory.get(type);
}
}
//调用
CommonNotify commonNotify = RefundIdentifyFactory.createObj(orderInfo.getType()).toRefund(refundModel);