CodeGuide
CodeGuide copied to clipboard
关于重学设计模式中,策略模式价格计算的问题
工程:itstack-demo-design-20-02
在每个优惠计算接口都会有一个限制,就是最低支付金额 1 元
比如类 ZJCouponDiscount 直减计算的过程:
public class ZJCouponDiscount implements ICouponDiscount<Double> {
/**
* 直减计算
* 1. 使用商品价格减去优惠价格
* 2. 最低支付金额1元
*/
public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) {
BigDecimal discountAmount = skuPrice.subtract(new BigDecimal(couponInfo));
if (discountAmount.compareTo(BigDecimal.ZERO) < 1) return BigDecimal.ONE;
return discountAmount;
}
}
返回结果之前加了判断 if (discountAmount.compareTo(BigDecimal.ZERO) < 1)
这里的意思是如果结果小于等于0的时候,会返回 1 元
但是还有一种情况,就是 大于 0 小于 1 的时候,例如 0.5,会放过去,然后返回这个 0.5 ,违背了 最低支付金额 1 元的设定