在开发场景,有许多if else 判断,赋值操作,通过策略模式简单化操作
优化前
//优惠券类型
Integer couponType = couponDTO.getCouponType();
if (couponType == 1) {
couponDTO.setCouponTypeName("折扣券");
} else if (couponType == 2) {
couponDTO.setCouponTypeName("满减券");
} else if (couponType == 3) {
couponDTO.setCouponTypeName("满返券");
} else if (couponType == 5) {
couponDTO.setCouponTypeName("抵现券");
} else if (couponType == 6) {
couponDTO.setCouponTypeName("兑换券");
}
BigDecimal faceAmount = couponDTO.getFaceAmount();
if (couponDTO.getCouponType() == 1) {
couponDTO.setFaceAmount(faceAmount == null
? BigDecimal.valueOf(0.00) : faceAmount.multiply(new BigDecimal("10")));
}
优化后
枚举
public enum CouponTypeEnum {
//卡卷类型:1折扣券,2满减券,3返利券,5现金券,6兑换券
DISCOUNT(1, "折扣卷"),
FULL(2, "满减劵"),
REBATE(3, "返利劵"),
CASH(5, "现金券"),
EXCHANGE(6, "兑换券");
CouponTypeEnum(Integer code, String text) {
this.code = code;
this.text = text;
}
private final Integer code;
private final String text;
public Integer getCode() {
return code;
}
public String getText() {
return text;
}
// 未匹配上,则返回默认的策略defaultItem
public static String match(Integer code){
if (code != null) {
for (CouponTypeEnum item: CouponTypeEnum.values()) {
if (item.code.equals(code)) {
return item.text;
}
}
}
return null;
}
// public String getTextByCode(Integer code) {
// return this.getText()
// }
}
使用
//优惠劵
assetCouponResDTO.setCouponTypeName(CouponTypeEnum.match(assetCouponResDTO.getCouponType()));

网友评论