上午
圓老師 建哥帶我們先回顧了昨天寫(xiě)的代碼,做了一次code diff犁柜,找出了下列幾個(gè)問(wèn)題息裸。
問(wèn)題
- 測(cè)試文件中在每一個(gè)測(cè)試案例中都初始化了類(lèi)
- 類(lèi)中的方法行為不是該類(lèi)所具有的
- 代碼沒(méi)有格式化
- 類(lèi)名和方法名不適合
- 每重構(gòu)一次代碼列吼,需要運(yùn)行一次測(cè)試
- 有重復(fù)代碼
- 在一個(gè)方法中處理了兩件事
- 有不必要的臨時(shí)變量
解決辦法
- 在測(cè)試文件中加一個(gè)setup方法
- 移動(dòng)方法到正確的類(lèi)中
- 檢查代碼空行/格式化
- 類(lèi)名是名詞壁晒,方法名用動(dòng)詞
- 重構(gòu)一次運(yùn)行測(cè)試
- 消除重復(fù)
- 分離職責(zé)
- 去除不必要的臨時(shí)變量
下午
part1
我們過(guò)了每個(gè)人前一天畫(huà)的4個(gè)概念圖瓷们,包括Map, Collection, Java面向?qū)ο? RESTful API. 話說(shuō)概念圖真的好難畫(huà)R嫡ぁC敫馈谬晕!
每個(gè)人都找出了一些問(wèn)題,每個(gè)人都有的問(wèn)題有:
- 表達(dá)不清晰
- 概念不具體
- 分類(lèi)不正確
還好今天只要先完善兩個(gè)概念圖携取。寫(xiě)完這個(gè)就去改圖攒钳。
part2
圓老師 建哥簡(jiǎn)單地給我們介紹了三層架構(gòu),這是經(jīng)典的三層架構(gòu)圖:
表現(xiàn)層大多用JSP, Js, Angular, Reactive等技術(shù)雷滋,是展示給用戶看的不撑。
業(yè)務(wù)層多用model, DTO, utils等技術(shù),在這一層處理業(yè)務(wù)邏輯晤斩。
數(shù)據(jù)層用mapper, JPARepository焕檬,這一層存儲(chǔ)數(shù)據(jù)。
首先澳泵,表現(xiàn)層向業(yè)務(wù)層發(fā)請(qǐng)求实愚,業(yè)務(wù)層處理邏輯,從數(shù)據(jù)層拿到數(shù)據(jù)兔辅,然后業(yè)務(wù)層對(duì)數(shù)據(jù)進(jìn)行處理腊敲,再返回給表現(xiàn)層。
規(guī)定:低層不能調(diào)用上層维苔,同層可以互相調(diào)用碰辅,不夠數(shù)據(jù)層和Controller除外。
三層架構(gòu)的優(yōu)點(diǎn)有
- 開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層介时;
- 可以很容易的用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn)没宾;
- 可以降低層與層之間的依賴(lài);
- 有利于標(biāo)準(zhǔn)化沸柔;
- 利于各層邏輯的復(fù)用循衰;
- 結(jié)構(gòu)更加的明確;
- 在后期維護(hù)的時(shí)候勉失,極大地降低了維護(hù)成本和維護(hù)時(shí)間羹蚣。
有優(yōu)點(diǎn)就有缺點(diǎn),三層架構(gòu)的缺點(diǎn)有
- 降低了系統(tǒng)的性能乱凿。這是不言而喻的顽素。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫(kù)徒蟆,以此獲取相應(yīng)的數(shù)據(jù)胁出,如今卻必須通過(guò)中間層來(lái)完成。
- 有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改段审。這種修改尤其體現(xiàn)在自上而下的方向全蝶。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層中都增加相應(yīng)的代碼抑淫。
- 增加了開(kāi)發(fā)成本绷落。
很多時(shí)候我們講三層架構(gòu)都會(huì)提到MVC框架,建哥也給我們介紹了MVC始苇。
模型(Model)砌烁,用于存儲(chǔ)程序中使用到的數(shù)據(jù);
視圖(View),用不同的表現(xiàn)形式來(lái)呈現(xiàn)數(shù)據(jù)催式;
控制器(Controller)函喉,更新模型。
MVC是表現(xiàn)層的設(shè)計(jì)模式荣月,核心目的是解耦管呵。
MVC與三層架構(gòu)的對(duì)應(yīng)關(guān)系是:
- V(View) 對(duì)應(yīng)表現(xiàn)層
- C(Controller)對(duì)應(yīng)表現(xiàn)層與業(yè)務(wù)邏輯層之間的Controller
- M(Model)對(duì)應(yīng)表現(xiàn)層與Controller下面所有的東西,包括業(yè)務(wù)邏輯層和數(shù)據(jù)層
總結(jié)
以上就是圓老師 建哥給我們今天講的東西哺窄,期待明天的RESTful和Spring捐下。
話說(shuō)RESTful還沒(méi)講23333