1.问题描述前端
如图,很显然,订单状态,支付状态,这种由数字表示其语义的字段,是不该该这么直接显示到页面上,数据库
例如,0表明新订单,1表明已下单等等,所以咱们须要进行作一层处理。工具
2.关于流程spa
(1)从数据库查出数据3d
(2)在代码逻辑中进行对象的转换,PO对象转换为DTO对象,code
(3)前端拿到DTO对象,显示在页面对象
提示:使用枚举定义常量,对于订单状态,支付状态,都有相应的枚举类;blog
3.解决方案接口
第一次解决方案get
在好久之前也遇到过这种情况,可是项目里并无关于状态常量的定义类,所以在当时,我采用了一个最笨的办法;
在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中调用该方法