關於「狀態」字段在頁面顯示的一次代碼優化

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中調用該方法

相關文章
相關標籤/搜索