代碼分層

一窄坦、背景

一個(gè)好的應(yīng)用分層需要具備以下幾點(diǎn):

方便后續(xù)代碼進(jìn)行維護(hù)擴(kuò)展;

分層的效果需要讓整個(gè)團(tuán)隊(duì)都接受春瞬;

各個(gè)層職責(zé)邊界清晰柴信。

二、如何進(jìn)行分層

2.1宽气、阿里規(guī)范

在阿里的編碼規(guī)范中約束的分層如下:

在這里插入圖片描述

開(kāi)放接口層:可直接封裝 Service 方法暴露成RPC接口;通過(guò) Web 封裝成 http 接口;進(jìn)行 網(wǎng)關(guān)安全控制随常、流量控制等。

終端顯示層:各個(gè)端的模板渲染并執(zhí)行顯示的層萄涯。

Web 層:主要是對(duì)訪問(wèn)控制進(jìn)行轉(zhuǎn)發(fā)绪氛,各類(lèi)基本參數(shù)校驗(yàn),或者不復(fù)用的業(yè)務(wù)簡(jiǎn)單處理等涝影。

Service 層:相對(duì)具體的業(yè)務(wù)邏輯服務(wù)層枣察。

Manager 層:通用業(yè)務(wù)處理層,它有如下特征:

對(duì)第三方平臺(tái)封裝的層燃逻,預(yù)處理返回結(jié)果及轉(zhuǎn)化異常信息;

對(duì)Service層通用能力的下沉序目,如緩存方案、中間件通用處理;

與DAO層交互伯襟,對(duì)多個(gè)DAO的組合復(fù)用猿涨。

DAO 層:數(shù)據(jù)訪問(wèn)層,與底層 MySQL姆怪、Oracle叛赚、PostgreSQL進(jìn)行數(shù)據(jù)交互。

阿里巴巴規(guī)約中的分層比較清晰簡(jiǎn)單明了稽揭,但是描述得還是過(guò)于簡(jiǎn)單了俺附,以及Service層和Manager層有很多同學(xué)還是有點(diǎn)分不清楚之間的關(guān)系,就導(dǎo)致了很多項(xiàng)目中根本沒(méi)有Manager層的存在溪掀。下面介紹一下具體業(yè)務(wù)中應(yīng)該如何實(shí)現(xiàn)分層事镣。

2.2、優(yōu)化分層

從我們的業(yè)務(wù)開(kāi)發(fā)中總結(jié)了一個(gè)較為的理想模型:

在這里插入圖片描述

最上層Controller和TService是我們阿里分層規(guī)范里面的第一層:輕業(yè)務(wù)邏輯膨桥,參數(shù)校驗(yàn)蛮浑,異常兜底。通常這種接口可以輕易更換接口類(lèi)型只嚣,所以業(yè)務(wù)邏輯必須要輕沮稚,甚至不做具體邏輯。

Service:業(yè)務(wù)層册舞,復(fù)用性較低蕴掏,這里推薦每一個(gè)Controller方法都得對(duì)應(yīng)一個(gè)Service,不要把業(yè)務(wù)編排放在Controller中去做,為什么呢?如果我們把業(yè)務(wù)編排放在Controller層去做的話(huà)盛杰,如果以后我們要接入其他框架,我們這里又需要把業(yè)務(wù)編排在做一次挽荡,這樣會(huì)導(dǎo)致我們每接入一個(gè)入口層這個(gè)代碼都得重新復(fù)制一份如下圖所示:

在這里插入圖片描述

這樣大量的重復(fù)工作必定會(huì)導(dǎo)致我們開(kāi)發(fā)效率下降,所以我們需要把業(yè)務(wù)編排邏輯都得放進(jìn)Service中去做:

在這里插入圖片描述

Mannager:可復(fù)用邏輯層即供。這里的Mannager可以是單個(gè)服務(wù)的定拟,比如我們的Cache,MQ等等,當(dāng)然也可以是復(fù)合的逗嫡,當(dāng)你需要調(diào)用多個(gè)Mannager的時(shí)候青自,這個(gè)可以合為一個(gè)Mannager,比如邏輯上的連表查詢(xún)等驱证。如果是httpMannager或rpcMannager需要在這一層做一些數(shù)據(jù)轉(zhuǎn)換延窜。

DAO:數(shù)據(jù)庫(kù)訪問(wèn)層。主要負(fù)責(zé)“操作數(shù)據(jù)庫(kù)的某張表抹锄,映射到某個(gè)java對(duì)象”逆瑞,Dao應(yīng)該只允許自己的Service訪問(wèn),其他Service要訪問(wèn)我的數(shù)據(jù)必須通過(guò)對(duì)應(yīng)的Service伙单。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末获高,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子车份,更是在濱河造成了極大的恐慌谋减,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扫沼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡庄吼,警方通過(guò)查閱死者的電腦和手機(jī)缎除,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)总寻,“玉大人器罐,你說(shuō)我怎么就攤上這事〗バ校” “怎么了轰坊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)祟印。 經(jīng)常有香客問(wèn)我肴沫,道長(zhǎng),這世上最難降的妖魔是什么蕴忆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任颤芬,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘站蝠。我一直安慰自己汰具,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布菱魔。 她就那樣靜靜地躺著留荔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澜倦。 梳的紋絲不亂的頭發(fā)上聚蝶,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音肥隆,去河邊找鬼既荚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛栋艳,可吹牛的內(nèi)容都是我干的恰聘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吸占,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晴叨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起矾屯,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兼蕊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后件蚕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體孙技,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年排作,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牵啦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妄痪,死狀恐怖哈雏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衫生,我是刑警寧澤裳瘪,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站罪针,受9級(jí)特大地震影響彭羹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜站故,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一皆怕、第九天 我趴在偏房一處隱蔽的房頂上張望毅舆。 院中可真熱鬧,春花似錦愈腾、人聲如沸憋活。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悦即。三九已至,卻和暖如春橱乱,著一層夾襖步出監(jiān)牢的瞬間辜梳,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工泳叠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留作瞄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓危纫,卻偏偏與公主長(zhǎng)得像宗挥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子种蝶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎契耿,感謝一直在我身邊的親朋好友。感恩相遇螃征!感恩不離不棄搪桂。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,566評(píng)論 0 11
  • 彩排完盯滚,天已黑
    劉凱書(shū)法閱讀 4,218評(píng)論 1 3
  • 表情是什么踢械,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息魄藕。高興了當(dāng)然就笑了裸燎,難過(guò)就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,053評(píng)論 2 7