重審業(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í)是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26