枚举类通过自定义方法实现订单状态的改变,通过返回值,执行后续业务,或者在枚举类状态转换方法内实现后续业务。但不建议在枚举类内实现业务,这样不能达到解耦的效果,适得其反。
Enum特性
枚举类中可以自定义属性
自定义的属性值最好用 private final 修饰,防止生成的 set 方法在使用时修改属性值,使代码更加安全。
枚举类中可以自定义构造函数
构造函数必须为 private 修饰,防止在别处声明此类对象。
枚举类可以自定义方法,枚举项可以选择性覆盖自定义的方法。(枚举类也可以有抽象方法,但是枚举项必须重写该方法。)
枚举类实现接口
与普通类一样,实现接口的时候需要实现接口的抽象方法,也可以让枚举类的不同对象实现不同的行为。
需求
订单是电商项目中不可缺少的组成部分,而订单状态的转换也是我们经常讨论的问题。我们都知道订单状态的转换是有一定的逻辑性的,不可以随意转换。
例:你想购买某个商品,只是把它加入了购物车,此时应该是未支付状态。如果来个请求想把它转换为退款状态,那么系统应该抛出提示信息 “状态转换失败,请先完成购买!”
接下来我们就用枚举来完成一下订单状态转换的限制。
枚举类定义
1 | public enum OrderStatus{ |
调用方法
1 | public class EnumTest { |
返回结果: