重審業(yè)務(wù)邏輯

用過MVC的童鞋都知道業(yè)務(wù)邏輯(Bussiness Logic),但是大多對這概念又是模棱兩可,業(yè)務(wù)邏輯從來都是這樣難以理解,談?wù)撉昂蠖朔蛛x之前這個概念非常有必要探討一下!

  在簡單的CUID的系統(tǒng)中,基本上都是對數(shù)據(jù)進(jìn)行增刪改查操作,并沒有多少業(yè)務(wù)邏輯可言;但像銀行系統(tǒng)對金融數(shù)據(jù)的操作就顯得不那么簡單了,以轉(zhuǎn)賬為例:A給B轉(zhuǎn)帳轉(zhuǎn)100元,簡易代碼如下:

if(A.balance - 100 >= 0){
    A.balance -100;
    B.balance +100;
}else{    //返回異常信息}

  這串代碼已經(jīng)不僅僅是對數(shù)據(jù)的增刪改查了,它包含了一些業(yè)務(wù)規(guī)則,比如A的余額如果少于100,這個代碼會返回異常信息提示"余額不足",類似于這種,一組和特定領(lǐng)域業(yè)務(wù)相關(guān)而又不可拆分的代碼,可以看作業(yè)務(wù)邏輯的實(shí)現(xiàn)。所以轉(zhuǎn)賬是作為一部個不可拆分的整體提供給用戶的,也就是說Business層是不可能給你提供一個"A.余額+x"這種接口的,如果你想轉(zhuǎn)賬,請用轉(zhuǎn)賬方法,方法里面怎么對數(shù)據(jù)操作,你無需關(guān)心,你也沒法關(guān)心。

=====
這里注意強(qiáng)調(diào)一下:頁面/渲染邏輯和業(yè)務(wù)邏輯的區(qū)別,頁面通常需要多個數(shù)據(jù)用來展示,比如網(wǎng)上銀行界面即顯示用戶名、余額和轉(zhuǎn)賬記錄等,這些信息的組合稱作頁面/渲染/展示邏輯,并不等于業(yè)務(wù)邏輯,業(yè)務(wù)邏輯只應(yīng)提供基本的業(yè)務(wù)數(shù)據(jù)而不應(yīng)該和頁面邏輯摻和起來,就拿這個例子來講,頁面的這些數(shù)據(jù),service層會提供三個接口來支持頁面數(shù)據(jù)的產(chǎn)出,但并不會給你拼到一塊給你,拼接不同的業(yè)務(wù)信息組合成一個View Object只能是脫離于service之外的層處理,在此特地分清頁面邏輯和業(yè)務(wù)邏輯的關(guān)系

前后端定義

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式