請教賬單領域的實體,值物件與服務的設計問題.
請教賬單領域的實體,值物件與服務的設計問題.
將一堆賬單按照型別(自來水,電力,燃氣,電信)的不同分別挑揀出來,然後按照型別放在不同的籃子裡面,對於這種業務場景.
我寫了一段程式碼,但感覺明顯是過程思維,而且裡面有很多if...else...,請教我如何將其使用模式重構為OO程式碼?如何徹底消除if...else...
賬單的類為:
public class Bill {
private String barCode;//賬單條碼
private float billAmount;//賬單 金額
private float commission;//手續費
private float totalAmount;//總金額
private int type;// 賬單型別,比如(自來水,電力,燃氣,電信)
private int commitStatus;//提交狀態
private int payStatus;//是否成功繳費
private Date commitDate;//賬單提交時間
private MemberCard card; //支付賬單所使用的會員卡
private BsOnlineTradeRecord record;//支付所產生的交易記錄
private Date billDate;//賬單日期
private Date payDate;//支付日期
private int finalStatus;//賬單最終出來狀態
/***
set() and get()方法省略
***/
}//end of class
賬單服務類中的一個分揀不同賬單的方法:
private Map<String, List<Bill>> sortBills(List<Bill> bill){
List<Bill> waterBills = new ArrayList<Bill>();
List<Bill> electricBills = new ArrayList<Bill>();
List<Bill> gasBills = new ArrayList<Bill>();
List<Bill> telecomBills =new ArrayList<Bill>();
for(Bill b:bill){
int bType = b.getType();
if(bType==10){//賬單型別碼是10為電力賬單
electricBills.add(b);
continue;
}else if(bType==5||bType==6||bType==7||bType==8||bType==9||bType==19||bType==20){
//賬單型別碼是5,6,7,8,9,19,20中一個就為自來水賬單
waterBills.add(b);
continue;
}else if(bType==1||bType==2||bType==3){
//賬單型別碼是1,2,3中一個就為燃氣賬單
gasBills.add(b);
continue;
}else if (bType==12){//賬單型別碼是12為電信賬單
telecomBills.add(b);
continue;
}//end of if...else...
}//end of for...
Map<String, List<Bill>> resultMap = new HashMap<String, List<Bill>>();
resultMap.put("water", waterBills);
resultMap.put("electric", electricBills);
resultMap.put("gas", gasBills);
resultMap.put("telecom", telecomBills);
return resultMap;
}//end of method
請各位大哥多多指教?感覺是Model Bill中的內容有點臃腫了. 一些屬性MemberCard card 是可以拉出來做值物件的.而賬單中似乎也不應該將交易記錄 BsOnlineTradeRecord record;作為賬單的屬性.請多指教!
將一堆賬單按照型別(自來水,電力,燃氣,電信)的不同分別挑揀出來,然後按照型別放在不同的籃子裡面,對於這種業務場景.
我寫了一段程式碼,但感覺明顯是過程思維,而且裡面有很多if...else...,請教我如何將其使用模式重構為OO程式碼?如何徹底消除if...else...
賬單的類為:
public class Bill {
private String barCode;//賬單條碼
private float billAmount;//賬單 金額
private float commission;//手續費
private float totalAmount;//總金額
private int type;// 賬單型別,比如(自來水,電力,燃氣,電信)
private int commitStatus;//提交狀態
private int payStatus;//是否成功繳費
private Date commitDate;//賬單提交時間
private MemberCard card; //支付賬單所使用的會員卡
private BsOnlineTradeRecord record;//支付所產生的交易記錄
private Date billDate;//賬單日期
private Date payDate;//支付日期
private int finalStatus;//賬單最終出來狀態
/***
set() and get()方法省略
***/
}//end of class
賬單服務類中的一個分揀不同賬單的方法:
private Map<String, List<Bill>> sortBills(List<Bill> bill){
List<Bill> waterBills = new ArrayList<Bill>();
List<Bill> electricBills = new ArrayList<Bill>();
List<Bill> gasBills = new ArrayList<Bill>();
List<Bill> telecomBills =new ArrayList<Bill>();
for(Bill b:bill){
int bType = b.getType();
if(bType==10){//賬單型別碼是10為電力賬單
electricBills.add(b);
continue;
}else if(bType==5||bType==6||bType==7||bType==8||bType==9||bType==19||bType==20){
//賬單型別碼是5,6,7,8,9,19,20中一個就為自來水賬單
waterBills.add(b);
continue;
}else if(bType==1||bType==2||bType==3){
//賬單型別碼是1,2,3中一個就為燃氣賬單
gasBills.add(b);
continue;
}else if (bType==12){//賬單型別碼是12為電信賬單
telecomBills.add(b);
continue;
}//end of if...else...
}//end of for...
Map<String, List<Bill>> resultMap = new HashMap<String, List<Bill>>();
resultMap.put("water", waterBills);
resultMap.put("electric", electricBills);
resultMap.put("gas", gasBills);
resultMap.put("telecom", telecomBills);
return resultMap;
}//end of method
請各位大哥多多指教?感覺是Model Bill中的內容有點臃腫了. 一些屬性MemberCard card 是可以拉出來做值物件的.而賬單中似乎也不應該將交易記錄 BsOnlineTradeRecord record;作為賬單的屬性.請多指教!
相關文章
- 請教一個物件設計的問題物件
- DDD-領域物件與領域服務物件
- java值物件的傳輸問題請教Java物件
- 請教banq大哥,領域模型的設計模型
- 請教大家一個支付系統領域物件建模中類提取的問題物件
- 關於實體與值物件的問題物件
- 請教板橋老師關於領域驅動開發設計問題
- 剛接觸領域模型,請教概念性的問題模型
- 新來的,請教領域驅動設計如何入門?
- 領域驅動設計戰術模式--領域服務模式
- 領域服務與應用服務的職責
- 請教大家一個財務軟體的問題
- 領域驅動設計戰術模式--值物件模式物件
- 戲說領域驅動設計(二十)——值物件物件
- 請教有關template設計模式的問題設計模式
- 請教一個DAO設計模式的問題設計模式
- 請教 NIO 中物件流通訊的問題物件
- 智慧領域物件設計物件
- 請教一個observer設計問題。Server
- 問題驅動設計與領域驅動設計的區別 - abdullin
- 請教個動態報表設計的問題
- 請教高手一個系統設計的問題
- 請教banq大哥:資料庫設計的問題!!!資料庫
- 請教各位:CTI IVR領域該應用那些設計模式?VR設計模式
- 請教四色原型與領域建模的對接技巧原型
- 請教:關於排課問題的實體關係
- [.NET領域驅動設計實戰系列]專題二:結合領域驅動設計的面向服務架構來搭建網上書店...架構
- 請教一個切片遞迴賦值的問題遞迴賦值
- 有關單體模式設計的問題,請大家幫忙模式
- DDD的實體、值物件、聚合根的基類和介面:設計與實現物件
- 結合領域事件和微服務的實現領域驅動設計 - Alagarsamy事件微服務
- 關於詳細設計/程式碼的同步問題--請教
- 記錄一次解決服務請求的跨域問題跨域
- 領域服務和應用服務的差別?
- 領域模型中的實體與ORM中的實體模型ORM
- 請教一個關於EJB建立物件時的問題物件
- 領域物件與業務邏輯關係設計思路物件
- 停止教條式的領域驅動設計 - CodeOpinion