CodeGuide icon indicating copy to clipboard operation
CodeGuide copied to clipboard

关于重学设计模式中,策略模式价格计算的问题

Open hczs opened this issue 3 years ago • 0 comments

工程: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 元的设定

hczs avatar Mar 27 '22 14:03 hczs