zoukankan      html  css  js  c++  java
  • 关于“状态”字段在页面显示的一次代码优化

    1.问题描述

    如图,很显然,订单状态,支付状态,这种由数字表示其语义的字段,是不应该这么直接显示到页面上,

    例如,0代表新订单,1代表已下单等等,因此我们需要进行做一层处理。

    2.关于流程

    (1)从数据库查出数据

    (2)在代码逻辑中进行对象的转换,PO对象转换为DTO对象,

    (3)前端拿到DTO对象,显示在页面

    提示:使用枚举定义常量,对于订单状态,支付状态,都有相应的枚举类;

    3.解决方案

    第一次解决方案

    在很久以前也遇到过这种状况,但是项目里并没有关于状态常量的定义类,因此在当时,我采用了一个最笨的办法;

    在PO对象与DTO对象的转换时,也就是从PO对象get字段时,我对取出来的字段进行一层if else判断,

    如果取出来的是“0”,那么存入DTO对象中为“新下单”,

    否则取出来的是“1”,那么存入DTO对象中为“已完成订单”。。。。。。。。。。。。

    这个操作,现在想想有点傻傻的,哪怕不从代码可拓展性的角度来看,如果状态过多,有0,1,2,3,4,5。。。。。,天知道我要做多少个if else;

    hahhh,但是只有经历过最傻的怎么写,才会有第二次解决方案,第三次解决方案。

    第二次解决方案

    这次的项目里使用枚举来进行常量的定义;

    因此,想到了可以在枚举类中编写一个方法:通过code来获取到对应的枚举的方法;

    问题:在哪里进行该方法的调用呢

    在DTO类中进行该方法的调用;

    为什么呢?

    因为天知道,其他地方还有没有使用这两个状态的了,如果有,岂不是还要重新再写一遍逻辑?因此把调用方法放在DTO类中,也就是根源上;

    当然,在DTO类中只是进行一个枚举类方法的调用,因为DTO类中按照规范是不可以进行业务逻辑的处理的;

    第三次解决方案

     问题:对于其他状态的枚举类,比如支付状态的枚举类,难道也要再写一个方法吗?这岂不是重复写代码吗?

    因此,可以这样做;

    将根据code获取对应的枚举的方法,再进行一次抽象,参数上可以指定枚举类,进行获取对应的枚举;

    (1)定义一个接口,将两个枚举类实现这个接口

    (2)编写工具类,写一个抽象的方法

     (3)在DTO中调用该方法

     @JsonIgnore注解:对该属性起到隐藏的作用,生成json时,忽略此属性;

    最终结果

  • 相关阅读:
    Android SQLite 简单使用演示样例
    经常使用排序算法实现[交换排序之冒泡排序、高速排序]
    Spring In Action读书笔记
    Linux 经常使用快捷键
    Android组件系列----ContentProvider内容提供者【1】
    Android Stuido 好卡怎么办?不要急,兄弟来教你
    【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC
    JAVA学习第四十五课 — 其它对象API(一)System、Runtime、Math类
    hdu 5073 Galaxy
    从设计稿到demo
  • 原文地址:https://www.cnblogs.com/inu6/p/11841599.html
Copyright © 2011-2022 走看看