枚举的高阶用法之枚举里写方法以及注入spring的bean

1、前言

  一般我们使用枚举都是用来定义一些常量。比如我们需要一个表示订单类(pc订单、手机订单)的常量,那我们就可以使用枚举来实现,如下:

@AllArgsConstructor
public enum OrderTypeEnum{
   
   

    PC("PC", "电脑端"),
    PHONE("PHONE", "手机端");

    private String name;
    private String value;

}

  接着再写一下根据name查找对应枚举的方法,枚举就算完成了。但比如我们的业务场景是这样的:我们有一个OrderTypeService接口及其实现类。

public interface OrderTypeService {
   
   

    String processPc(String order);

    String processPhone(String order);
}
@Service
public class OrderTypeServiceImpl implements OrderTypeService {
   
   

    @Override
    public String processPc(String order) {
   
   
        //具体的处理pc订单的业务逻辑
        System.out.println("开始处理pc订单:" + order);
        return null;
    }

    @Override
    public String processPhone(String order) {
   
   
        //具体的处理phone订单的业务逻辑
        System.out.println("开始处理phone订单:" + order);
        return null;
    }
}

  根据接口的方法名我们一眼就知道,processPc是用来处理PC订单的;processPhone是用来处理PHONE订单的。然后再实际调用这两个方法的地方就需要我们进行if-else的判断。这里的if-else判断的缺点是:代码扩展性很差,如果以后又增加了其它订单类型,我们还需要改这里的if-else逻辑。

        if (OrderTypeEnum.PC.equals(orderTypeEnum)) {
   
   
            orderTypeService.processPc("order");
        } else if (OrderTypeEnum.PHONE.equals(orderTypeEnum)) {
   
   
            orderTypeService.processPhone
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值