美文网首页
java策略模式--枚举类优化

java策略模式--枚举类优化

作者: Raral | 来源:发表于2021-07-06 20:31 被阅读0次

在开发场景,有许多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()));
1625574230.png

相关文章

  • java策略模式--枚举类优化

    在开发场景,有许多if else 判断,赋值操作,通过策略模式简单化操作 优化前 优化后 枚举 使用

  • 设计模式 - 工厂模式(策略工厂)

    首先,按照if...else if语句来实现打折商品的例子,代码如下: 用策略+工厂模式优化:枚举类: 接口类 接...

  • lambda中Function+Map—实现轻量级的策略模式

    策略模式目的是取代if...else...的写法,但是策略模式一般需要定义一个接口+多个实现类,然后使用枚举类(实...

  • Java枚举

    枚举 普通方式定义(int枚举模式) 枚举方式 Enum抽象类常见方法 Enum是所有 Java 语言枚举类型的公...

  • 枚举学习

    java enum枚举类 enum(枚举)类介绍 **java枚举类是一组预定义常量的集合,使用enum关键字声明...

  • Java设计模式之策略模式

    Java设计模式之策略模式 简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行...

  • 使用枚举类实现策略模式

    一、类结构图 二、抽象类ExecutorRouter 三、具体的实现类(略)。。。。。。。 四、枚举 五、具体的使用示例

  • 策略模式之枚举

    策略枚举定义 它是一个枚举 它是一个浓缩了策略模式的枚举 代码展示 盘它 结果 注意策略枚举是一个非常优秀和方便的...

  • Java枚举

    Java中的每个枚举都是java.lang.Enum的final子类,枚举类中的每个枚举常量都是该枚举类的一个实例...

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

网友评论

      本文标题:java策略模式--枚举类优化

      本文链接:https://www.haomeiwen.com/subject/lixnultx.html