多重if判断简单优化

一、最笨重的
维护看起来很难受

public class Test {


    private static String getPrice(String fruit) {
        if ("梨".equals(fruit)) {
            return "梨价格";
        } else if ("苹果".equals(fruit)) {
            return "苹果价格";
        } else {
            return "桃价格";
        }
    }

    public static void main(String[] args) {
        //System.out.println(TypeEnum.getPrice("梨"));
        //System.out.println(FruitFactory.getType("梨").price());
        System.out.println(getPrice("梨"));
    }


}

二、枚举类判断
维护起来只需要添加修改枚举类,无需动其他的。
当枚举很多并且自定义方法很多时,性能会下降,且方法会很长,一拉一大串。二三十个枚举以下都可以用吧

public enum TypeEnum {

    DEFEND("异常") {
        @Override
        public String price() {
            return "我是异常的价格";
        }
    },

    PEAR("梨") {
        @Override
        public String price() {
            return "我是梨的价格";
        }
    },
    APPLE("苹果") {
        @Override
        public String price() {
            return "我是苹果的价格";
        }
    },
    PEACH("桃") {
        @Override
        public String price() {
            return "我是桃的价格";
        }
    };

    TypeEnum(String name) {
        this.name = name;
    }

    private String name;

    public String getName() {
        return name;
    }

    public abstract String price();


    public static String getPrice(String name) {
        for (TypeEnum type : values()) {
            if (type.getName().equals(name)) {
                return type.price();
            }
        }
        return DEFEND.price();
    }
}

三、工厂类
扩展需要实现接口并添加到初始化工厂里。

public class FruitFactory {

    private static Map<String, IFruit> fruitMap = new HashMap<>();

    static {
        fruitMap.put("梨", new Pear());
        fruitMap.put("苹果", new Apple());
        fruitMap.put("桃", new Peach());
    }

    public static IFruit getType(String fruit) {
        return fruitMap.get(fruit);
    }
}

这块只罗列苹果类

public class Apple implements IFruit {
    @Override
    public String price() {
        return "我是苹果价格";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值