精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

阿里終面:優(yōu)秀的代碼都是如何分層的?

開發(fā) 前端
說起應(yīng)用分層,大部分人都會(huì)認(rèn)為這個(gè)不是很簡(jiǎn)單嘛,就 Controller,Service,Mapper 三層。

說起應(yīng)用分層,大部分人都會(huì)認(rèn)為這個(gè)不是很簡(jiǎn)單嘛,就 Controller,Service,Mapper 三層。

[[389284]]

圖片來自 Pexels 

看起來簡(jiǎn)單,很多人其實(shí)并沒有把他們職責(zé)劃分開,在很多代碼中,Controller 做的邏輯比 Service 還多,Service 往往當(dāng)成透?jìng)髁耍@其實(shí)是很多人開發(fā)代碼都沒有注意到的地方,反正功能也能用,至于放哪無所謂唄。

這樣往往造成后面代碼無法復(fù)用,層級(jí)關(guān)系混亂,對(duì)后續(xù)代碼的維護(hù)非常麻煩。

的確在這些人眼中分層只是一個(gè)形式,前輩們的代碼這么寫的,其他項(xiàng)目代碼這么寫的,那么我也這么跟著寫。

但是在真正的團(tuán)隊(duì)開發(fā)中每個(gè)人的習(xí)慣都不同,寫出來的代碼必然帶著自己的標(biāo)簽,有的人習(xí)慣 Controller 寫大量的業(yè)務(wù)邏輯,有的人習(xí)慣在 Service 中之間調(diào)用遠(yuǎn)程服務(wù)。

這樣就導(dǎo)致了每個(gè)人的開發(fā)代碼風(fēng)格完全不同,后續(xù)其他人修改的時(shí)候,一看,我靠這個(gè)人寫的代碼和我平常的習(xí)慣完全不同,修改的時(shí)候到底是按著自己以前的習(xí)慣改,還是跟著前輩們走。

這又是個(gè)艱難的選擇,選擇一旦有偏差,你的后輩又維護(hù)你的代碼的時(shí)候,恐怕就要罵人了。

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

  • 方便后續(xù)代碼進(jìn)行維護(hù)擴(kuò)展
  • 分層的效果需要讓整個(gè)團(tuán)隊(duì)都接受
  • 各個(gè)層職責(zé)邊界清晰

如何進(jìn)行分層

阿里規(guī)范

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

 

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

②終端顯示層:各個(gè)端的模板渲染并執(zhí)行顯示的層。當(dāng)前主要是 velocity 渲染,JS 渲染,JSP 渲染,移動(dòng)端展示等。

③Web 層:主要是對(duì)訪問控制進(jìn)行轉(zhuǎn)發(fā),各類基本參數(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ù)用。

⑥D(zhuǎn)AO 層:數(shù)據(jù)訪問層,與底層 MySQL、Oracle、Hbase 進(jìn)行數(shù)據(jù)交互。

阿里巴巴規(guī)約中的分層比較清晰簡(jiǎn)單明了,但是描述得還是過于簡(jiǎn)單了,以及 Service 層和 Manager 層有很多同學(xué)還是有點(diǎn)分不清楚之間的關(guān)系,就導(dǎo)致了很多項(xiàng)目中根本沒有 Manager 層的存在。

下面介紹一下具體業(yè)務(wù)中應(yīng)該如何實(shí)現(xiàn)分層。

優(yōu)化分層

從我們的業(yè)務(wù)開發(fā)中總結(jié)了一個(gè)較為的理想模型,這里要先說明一下由于我們的 RPC 框架選用的是 Thrift 可能會(huì)比其他的一些 RPC 框架例如 Dubbo 會(huì)多出一層,作用和 controller 層類似。

 

最上層 Controller 和 TService 是我們阿里分層規(guī)范里面的第一層:輕業(yè)務(wù)邏輯,參數(shù)校驗(yàn),異常兜底。

通常這種接口可以輕易更換接口類型,所以業(yè)務(wù)邏輯必須要輕,甚至不做具體邏輯。

①Service:業(yè)務(wù)層,復(fù)用性較低,這里推薦每一個(gè) Controller 方法都得對(duì)應(yīng)一個(gè) Service,不要把業(yè)務(wù)編排放在 Controller 中去做,為什么呢?

如果我們把業(yè)務(wù)編排放在 Controller 層去做的話,如果以后我們要接入 Thrift,我們這里又需要把業(yè)務(wù)編排在做一次,這樣會(huì)導(dǎo)致我們每接入一個(gè)入口層這個(gè)代碼都得重新復(fù)制一份。

如下圖所示:

 

這樣大量的重復(fù)工作必定會(huì)導(dǎo)致我們開發(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,比如邏輯上的連表查詢等。如果是 httpMannager 或 rpcMannager 需要在這一層做一些數(shù)據(jù)轉(zhuǎn)換。

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

分層領(lǐng)域模型的轉(zhuǎn)換

在阿里巴巴編碼規(guī)約中列舉了下面幾個(gè)領(lǐng)域模型規(guī)約:

  • DO(Data Object):與數(shù)據(jù)庫(kù)表結(jié)構(gòu)一一對(duì)應(yīng),通過 DAO 層向上傳輸數(shù)據(jù)源對(duì)象。
  • DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象,Service 或 Manager 向外傳輸?shù)膶?duì)象。
  • BO(Business Object):業(yè)務(wù)對(duì)象。由 Service 層輸出的封裝業(yè)務(wù)邏輯的對(duì)象。
  • AO(Application Object):應(yīng)用對(duì)象。在 Web 層與 Service 層之間抽象的復(fù)用對(duì)象模型,極為貼近展示層,復(fù)用度不高。
  • VO(View Object):顯示層對(duì)象,通常是 Web 向模板渲染引擎層傳輸?shù)膶?duì)象。
  • Query:數(shù)據(jù)查詢對(duì)象,各層接收上層的查詢請(qǐng)求。注意超過2個(gè)參數(shù)的查詢封裝,禁止使用 Map 類來傳輸。

 

每一個(gè)層基本都自己對(duì)應(yīng)的領(lǐng)域模型,這樣就導(dǎo)致了有些人過于追求每一層都是用自己的領(lǐng)域模型。

這樣就導(dǎo)致了一個(gè)對(duì)象可能會(huì)出現(xiàn) 3 次甚至 4 次轉(zhuǎn)換在一次請(qǐng)求中,當(dāng)返回的時(shí)候同樣也會(huì)出現(xiàn) 3-4 次轉(zhuǎn)換,這樣有可能一次完整的請(qǐng)求-返回會(huì)出現(xiàn)很多次對(duì)象轉(zhuǎn)換。

如果在開發(fā)中真的按照這么來,恐怕就別寫其他的了,一天就光寫這個(gè)重復(fù)無用的邏輯算了吧。

所以我們得采取一個(gè)折中的方案:

  • 允許 Service/Manager 可以操作數(shù)據(jù)領(lǐng)域模型,對(duì)于這個(gè)層級(jí)來說,本來自己做的工作也是做的是業(yè)務(wù)邏輯處理和數(shù)據(jù)組裝。
  • Controller/TService 層的領(lǐng)域模型不允許傳入 DAO 層,這樣就不符合職責(zé)劃分了。
  • 同理,不允許 DAO 層的數(shù)據(jù)傳入到 Controller/TService。

 

總結(jié)

總的來說業(yè)務(wù)分層對(duì)于代碼規(guī)范是比較重要,決定著以后的代碼是否可復(fù)用,是否職責(zé)清晰,邊界清晰。

當(dāng)然這種分層其實(shí)見仁見智,團(tuán)隊(duì)中的所有人的分層習(xí)慣也不同,所以很難權(quán)衡出一個(gè)標(biāo)準(zhǔn)的準(zhǔn)則,總的來說只要滿足職責(zé)邏輯清晰,后續(xù)維護(hù)容易,就是好的分層。

最后,如果你的團(tuán)隊(duì)有更好的分層,或者上面所描述的有什么錯(cuò)誤的地方還請(qǐng)留言指正一下。

作者:咖啡拿鐵

編輯:陶家龍

出處:轉(zhuǎn)載自公眾號(hào)咖啡拿鐵(ID:close_3092860495)

 

責(zé)任編輯:武曉燕 來源: 咖啡拿鐵
相關(guān)推薦

2022-10-09 18:39:46

分層代碼復(fù)用

2020-01-07 08:31:52

代碼分層Web

2022-01-24 08:19:19

業(yè)務(wù)CRUD場(chǎng)景

2025-01-14 10:28:34

業(yè)務(wù)主表讀寫冷熱分離

2025-05-12 01:55:00

MySQL存儲(chǔ)數(shù)據(jù)

2020-12-04 06:35:20

TCPUDP阿里

2021-03-16 16:35:39

網(wǎng)關(guān)Java代碼

2025-08-05 03:22:00

2022-08-15 08:34:08

OauthCAS登錄

2021-07-19 09:27:42

SSD內(nèi)存Linux

2023-09-07 08:59:30

海量數(shù)據(jù)方案

2023-02-26 17:24:53

8G內(nèi)存線程

2020-03-09 14:10:48

代碼開發(fā)工具

2021-06-30 10:10:01

企業(yè)攻擊漏洞網(wǎng)絡(luò)安全

2024-06-13 15:26:23

2023-03-27 15:05:10

Python技巧

2024-03-22 13:31:00

線程策略線程池

2015-08-31 10:14:30

程序員處理代碼糟糕代碼

2015-09-01 11:20:58

程序員糟糕代碼

2014-09-12 10:38:01

程序員代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕在线观看一区| 99成人超碰| 欧美性xxxxxxx| 久久亚洲国产精品日日av夜夜| 男人的天堂av网| 国产一区二区三区朝在线观看| 久久久久久久网| 国产精品视频区1| 污污的视频在线免费观看| 欧美午夜在线播放| 亚洲国产欧美日韩另类综合 | 亚洲精品国产拍免费91在线| www一区二区www免费| 国产天堂在线| 国产在线播放一区| 97国产suv精品一区二区62| 国产艳俗歌舞表演hd| 成人亚洲网站| 国产精品久久久久影院亚瑟| 91精品久久久久久蜜桃| 久久精品一二区| 欧美成人激情| 亚洲国产日韩欧美在线动漫| 国产精品igao| 在线播放免费av| 久久久五月婷婷| 国产主播喷水一区二区| 国产成人久久久久| 久久91麻豆精品一区| 欧美一区二区三区在| 日本在线视频www| 色呦呦网站在线观看| 久久伊人中文字幕| 99re国产视频| 精品国产青草久久久久96| 午夜日韩激情| 中文字幕日韩有码| 中文字幕人妻一区二区三区| 高清久久精品| 欧美综合天天夜夜久久| 国产二区视频在线| 婷婷视频在线| 久久久高清一区二区三区| 91精品国产一区二区三区动漫| 无码免费一区二区三区| 亚洲东热激情| 欧美精品制服第一页| 欧美aaa级片| 亚洲资源网站| 亚洲国产另类久久精品 | 日本一区二区久久精品| 欧美熟女一区二区| 国产精品123| 亚洲精品日韩激情在线电影| 欧美成人精品网站| 中文亚洲免费| 91精品国产777在线观看| 貂蝉被到爽流白浆在线观看| 色棕色天天综合网| 日韩av在线免费看| 黄色激情在线观看| 97成人在线| 日韩精品中文字幕一区| 亚洲三级在线观看视频| 久久99久久99精品免观看软件| 婷婷开心激情综合| 青娱乐自拍偷拍| sis001亚洲原创区| 亚洲一区二区欧美激情| 9191国产视频| 亚洲综合影视| 亚洲欧洲日本在线| 亚洲精品日韩在线观看| jizz亚洲| 亚洲视频免费看| wwwjizzjizzcom| 日本理论片午伦夜理片在线观看| 一区二区三区四区在线| 青草全福视在线| 免费在线观看的电影网站| 夜夜嗨av一区二区三区四季av | 欧美大人香蕉在线| 日韩在线中文字幕| 神马午夜精品91| 欧美激情五月| 国模视频一区二区| 欧美特黄aaaaaa| 亚久久调教视频| 国产精品久久久久av| 中文字幕福利视频| 国产一区 二区 三区一级| 97夜夜澡人人双人人人喊| 国产成人三级在线观看视频| 97久久精品人人爽人人爽蜜臀| 精品国产乱码久久久久久88av| 神马午夜电影一区二区三区在线观看| 91捆绑美女网站| 亚洲v日韩v欧美v综合| 超碰公开在线| 午夜精品一区二区三区三上悠亚| 日韩av黄色网址| 免费电影日韩网站| 欧美日本视频在线| 国产麻豆剧传媒精品国产| 国产成人久久精品一区二区三区| 欧美男女性生活在线直播观看| 最新免费av网址| 最新日韩一区| 欧美一区二区播放| 久久国产精品影院| 国产精品精品| 国内精品一区二区三区| 女人十八岁毛片| 免费成人在线影院| 国产精品久久久久久久久久久久冷 | 免费久久精品| 欧美精品情趣视频| av首页在线观看| 国产福利视频一区二区三区| 麻豆精品传媒视频| 国产在线激情| 色88888久久久久久影院按摩| 亚洲天堂网一区| 超碰成人97| 久久精品国产亚洲一区二区| 日本免费观看视| 精品一区二区久久| 鲁鲁视频www一区二区| 成人短视频在线| 色狠狠色噜噜噜综合网| 日韩成人精品视频在线观看| 欧美一区 二区| 久久天堂av综合合色| 日韩人妻精品中文字幕| 国产黄人亚洲片| 伊人狠狠色丁香综合尤物| 手机av在线| 欧美不卡一区二区三区四区| 国产三级精品三级观看| 久久一日本道色综合久久| 动漫美女被爆操久久久| 久久久久久久久免费视频| 欧美性xxxxx极品| 高清中文字幕mv的电影| 亚洲精品小说| 国产精品久久久久久网站| 日韩a在线观看| 亚洲成av人综合在线观看| www.色就是色.com| 久久裸体网站| 91国内揄拍国内精品对白| 成人乱码一区二区三区 | 污片视频在线免费观看| 制服丝袜中文字幕亚洲| 久久精品无码一区| 亚洲一区二区免费看| 国产日韩亚洲精品| freexxx性亚洲精品| 91精品国产福利| 三级在线观看免费大全| 激情五月激情综合网| 久久综合婷婷综合| 亚洲人成午夜免电影费观看| 亚洲国产精品va在线看黑人动漫 | 三级视频网站在线| 欧美性极品xxxx娇小| 国产视频久久久久久| 亚洲视频二区| 久久99久久精品国产| 乡村艳史在线观看| 日韩精品中文字幕在线| 在线天堂中文字幕| 国产色产综合色产在线视频| 日本激情视频在线| 欧美xxav| 91中文在线视频| 羞羞网站在线看| 日韩女同互慰一区二区| 91九色丨porny丨极品女神| 国产成人啪午夜精品网站男同| 亚洲免费不卡| 亚洲天堂网站| 欧美激情欧美激情在线五月| 色婷婷在线视频| 亚洲成av人片在线观看| 欧美成人三级伦在线观看| 天堂久久久久va久久久久| 日本在线观看一区二区三区| 成人涩涩视频| 久久国产精品久久久久| 亚洲一二区视频| 亚洲综合视频在线观看| 黄色在线观看av| 免费观看一级特黄欧美大片| 黄色一级片av| 欧美调教在线| 成人午夜两性视频| 国产高潮在线| 日韩在线观看免费高清完整版| a级片在线免费看| 欧美日韩国产在线| 国产精品视频看看| 99这里都是精品| 美女黄色片视频| 欧美黄色免费| 国产精品一区二区欧美| abab456成人免费网址| 欧美黑人狂野猛交老妇| 四虎电影院在线观看| 欧美日本国产一区| 国产精品视频久久久久久久| 日本一区二区三区久久久久久久久不 | 亚洲v中文字幕| 黄瓜视频污在线观看| 国产一区二区三区四| 日本精品一区| 日韩成人视屏| 日本不卡免费一区| 亚洲国产成人在线视频| 波多野结衣高清视频| 亚洲免费观看高清在线观看| 亚洲综合123| 美女国产一区| 久久久久久久久久久综合| 九九视频精品全部免费播放| 91成人伦理在线电影| 色网在线免费观看| 久久久精品久久久久| 国内精品在线视频| 精品裸体舞一区二区三区| 一本一道精品欧美中文字幕| 精品国产91乱高清在线观看| www.youjizz.com亚洲| 亚洲精品综合在线| 日韩av手机在线免费观看| 国产精品家庭影院| 国产jizz18女人高潮| 中文字幕不卡三区| 成人在线观看免费高清| 欧美国产1区2区| 免费黄色在线网址 | 国产精品高清无码在线观看| 99久久99久久免费精品蜜臀| 日韩成人av一区二区| 99久久99精品久久久久久| 国产激情视频网站| 不卡一区二区在线| 国产精品久久久久久久无码| caoporn国产精品| 亚洲av成人精品一区二区三区| 成人免费精品视频| bl动漫在线观看| 久久亚洲私人国产精品va媚药| aa一级黄色片| 国产清纯白嫩初高生在线观看91| 精品国产成人亚洲午夜福利| 欧美高清一级片在线观看| jizzjizzjizz国产| 自拍偷拍亚洲欧美日韩| 欧美另类视频在线观看| 亚洲高清不卡在线观看| 国产精品免费精品一区| 在线观看亚洲精品| 国产麻豆免费观看| 亚洲成人久久久久| 欧美女v视频| 中文字幕亚洲欧美日韩2019| 免费日本一区二区三区视频| 欧美成人午夜影院| 国产激情视频在线看| 青青久久av北条麻妃海外网| 欧美精选视频一区二区| 91美女片黄在线观| 给我免费播放日韩视频| 欧美黄色直播| 亚洲蜜桃视频| 国产精品一区二区免费在线观看| 久久亚洲美女| 亚洲18在线看污www麻豆| 丁香婷婷综合五月| 中文字幕免费视频| 亚洲人成亚洲人成在线观看图片| 激情综合五月网| 在线中文字幕一区二区| 999av视频| 亚洲美女动态图120秒| 午夜免费视频在线国产| 欧美极品在线播放| 主播大秀视频在线观看一区二区| 91沈先生播放一区二区| 亚洲人成伊人成综合图片| 黄瓜视频免费观看在线观看www| 亚洲精品日韩久久| 成 人 黄 色 小说网站 s色| 成人18视频日本| 欧日韩不卡视频| 狠狠色噜噜狠狠狠狠97| 国产精品天天操| 亚洲男人天堂2024| 天堂av资源在线观看| 国产精品成人av在线| 伊人久久大香线蕉av超碰| 视频在线观看成人| 亚洲人体偷拍| 亚洲成人手机在线观看| 国产亚洲污的网站| 国产精品第九页| 51精品久久久久久久蜜臀| 青青青草原在线| 久久久久久中文字幕| 欧美激情福利| 欧美h视频在线| 国产精品观看| 肉色超薄丝袜脚交| 日本一区二区三区高清不卡| 国产精品suv一区二区三区| 欧美一区二区黄| 欧美激情视频在线播放| 日韩免费av一区二区| 日本韩国欧美超级黄在线观看| 久久久无码中文字幕久...| 免费av成人在线| 韩国女同性做爰三级| 精品日本美女福利在线观看| 性欧美8khd高清极品| 久久五月天色综合| 免费视频观看成人| 亚洲国产另类久久久精品极度| 噜噜噜在线观看免费视频日韩| 人妻无码中文久久久久专区| 一区二区三区高清不卡| av网站免费播放| 久久亚洲私人国产精品va| 97久久中文字幕| 二级片在线观看| 国产又粗又猛又爽又黄91精品| 国产激情av在线| 欧美色手机在线观看| 成在在线免费视频| 国产精品久久久久久影视| 国产探花在线精品| www日韩视频| 欧美国产日韩亚洲一区| 无码人妻精品一区二区三区不卡| 亚洲精品网址在线观看| 免费成人直播| 亚洲第一综合| 久久精品国产精品亚洲综合| 少妇高潮在线观看| 欧美日韩在线播放三区| 老司机在线看片网av| 91在线国产电影| 欧美日韩福利| 亚洲精品乱码久久久久久久| 精品日韩视频在线观看| 精品久久av| 国产精品中文字幕在线| 91精品国产调教在线观看| 日本55丰满熟妇厨房伦| 亚洲国产精品影院| 全部免费毛片在线播放网站| 国产经典一区二区| 99成人在线视频| 97免费公开视频| 亚洲成人精品影院| 精品999视频| 91精品综合久久久久久五月天| 亚洲破处大片| 中文字幕在线视频播放| 色哟哟一区二区| 麻豆传媒在线免费看| 成人av中文| 亚洲欧美网站| 四虎永久免费地址| 欧美变态tickle挠乳网站| 手机在线理论片| 影音欧美亚洲| 99视频一区二区| 艳妇乳肉豪妇荡乳av| 欧美成人免费小视频| 一区二区三区视频免费观看| 99国产精品久久久久久| 亚洲国产日韩一区二区| 成人影院免费观看| 成人免费在线看片| 日韩电影免费在线观看网站| 天天操天天操天天操天天操天天操| 亚洲精品国精品久久99热一| 成人午夜亚洲| 日韩在线综合网| 亚洲免费在线看| 二区在线视频| av资源站久久亚洲| 免费成人av在线| 久久久久久久99| 精品国产一区av| 精品在线播放| 亚洲精品一区二区18漫画| 欧美在线不卡一区| 第一福利在线视频|