java枚举最佳实践

背景

场景是这样的,客户端要发送JSON数据到达服务端解析,由于客户端的不同版本更新,打过来的数据有差异,服务端要兼容这种差异对不同的处理这些数据,因为客户端升级是由用户决定的。

思路

实现的方式肯定很多种,恰好学到《effective java》中的枚举,枚举可以加一个方法,我们这个场景每一种日志格式就对应于一种解析的方法。

public enum LogVersion {
    OLD(0),NEW(1){
        @Override
        public String parseLog(JSONObject jsonObject) {
            return jsonObject.toString() + "new";
        }
    };
    private final int num;

    private LogVersion(int num) {
        this.num = num;
    }

    public String parseLog(JSONObject jsonObject) {
        return jsonObject.toString();
    }

    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        String oldVersionLog = OLD.parseLog(jsonObject);
        String newVersionLog = NEW.parseLog(jsonObject);
        System.out.println(oldVersionLog);
        System.out.printf(newVersionLog);
    }
}

当然,项目中实现的逻辑比这个复杂得多。但是,这样做就好吗?极致的代码都在追求:扩展性、复用性、性能。如果客户端再发一个版本,我们在里面重写解析方法就好;当很多不同类型的客户端觉得这个处理逻辑很相似,需要复用这个LogVersion的处理,这样就会带来问题,首先是命名我们命得不好,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值