什么场景该使用通用计价
如果商品的费用属性一直在变化,比如隔三岔五的新增某种费用(按新规则计算的新费用),作为开发人员的你每次需要胆战心惊的维护现有的计价接口,测试也需要花费大量时间验证对其他费用的影响。基于这一点,我在想如果初期把计价做成一个通用的计价接口,每次加费用我只需要关注新费用的计算规则,不需要去修改已有费用的规则计算代码,也就可以避免一些BUG的产生。
简单代码实现
总体思路是利用Spring的容器管理,项目启动时将所有计价类型加载在计价执行类中,具体调用方法和平时写代码一样注入就行。这个方法并没有在实际项目中使用。
1. 通用计价接口
import java.math.BigDecimal;
import java.util.Map;
public interface CommonValuation {
/**
* 计价类型
* @return
*/
String getValuationType();
/**
* 计价接口,子类实现自己的计价方式
* @param paramsJson
* @param result 保存所有的费用类型及金额
* @return
*/
void valuation(String paramsJson, Map result);
}
说明:这里定义了计价接口,具体的计价类型和计算规则由子类实现,这里会借助Spring来管理子类。
2. 计价接口的执行类
@Component
public cl