Discuss / Java / 使用策略模式新增一种策略,允许在满100减20的基础上对Prime会员再打七折。

使用策略模式新增一种策略,允许在满100减20的基础上对Prime会员再打七折。

Topic source
package com.itranswarp.learnjava;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class OverPrimeDiscountStrategy implements DiscountStrategy {

	@Override
	public BigDecimal getDiscount(BigDecimal total) {
		BigDecimal result = total;
		if (result.compareTo(BigDecimal.valueOf(100)) >= 0) {
			result = result.subtract(BigDecimal.valueOf(20));
		}
		result = result.multiply(new BigDecimal("0.7")).setScale(2, RoundingMode.DOWN);
		return total.subtract(result);
	}

}

木火应

#2 Created at ... [Delete] [Delete and Lock User]

论借鉴的重要性,一楼大佬的答案我又给改了下?,感谢,代码排版有点问题,手机上进行的操作

public BigDecimal getDiscount(BigDecimal total) {                                               BigDecimal result = total;                    if (result.compareTo(BigDecimal.valueOf(100)) >= 0) {                                           result = result.subtract(BigDecimal.valueOf(20));                                           result = result.multiply(new BigDecimal("0.3")).setScale(2, RoundingMode.DOWN).add(BigDecimal.valueOf(20));                               return result;                                }                                             return result.multiply(new BigDecimal("0.3")).setScale(2, RoundingMode.DOWN);                             }


  • 1

Reply