學(xué)JavaEE的5層 有感

以我之前的iOS所經(jīng)歷,一般項(xiàng)目中用到的MVC設(shè)計(jì)模式(MVVM)

原有的mvc結(jié)構(gòu)改成如下:

1view層:顯示層。

2control層:業(yè)務(wù)層,集合了各種action。

3service層。

4DAO層。

原來的model層不見了,增加了service層和DAO層。DAO,即Data Access Object,數(shù)據(jù)訪問接口,數(shù)據(jù)訪問:顧名思義就是與數(shù)據(jù)庫(kù)打交道。

在這個(gè)結(jié)構(gòu)中,control不直接和DAO聯(lián)系,

需要操作數(shù)據(jù)的時(shí)候,通過service層訪問DAO層來實(shí)現(xiàn)。

service層做的事情,不僅僅是調(diào)用DAO操作數(shù)據(jù),還會(huì)包含了一定的業(yè)務(wù)邏輯。整個(gè)程序的設(shè)計(jì),也變成了針對(duì)服務(wù)進(jìn)行設(shè)計(jì)。

這樣做的好處是:

1control層中的action得以精簡(jiǎn),因?yàn)閍ction中的一些邏輯,被重構(gòu)成一個(gè)個(gè)的服務(wù)。而不同的action也可以重用服務(wù)了。

2只負(fù)責(zé)和數(shù)據(jù)打交道的DAO層,相比之前的model層,也得以精簡(jiǎn)(DAO層盡量只做最原子的數(shù)據(jù)操作,不同數(shù)據(jù)操作之間的聯(lián)系,這邊不考慮,那是service層的事情)。

3service層可以實(shí)現(xiàn)很大程度上的代碼復(fù)用,程序的功能封裝更清晰了。

4由于service層更加清晰的定義了應(yīng)用程序的邊界,那么對(duì)于各個(gè)service函數(shù)(對(duì)應(yīng)某個(gè)服務(wù)/應(yīng)用),要做到自動(dòng)化測(cè)試就方便多了。WEB程序如何做到能方便的進(jìn)行單元測(cè)試,這是一直困擾我的難題,這樣的設(shè)計(jì)似乎真的可行了~

5開發(fā)人員的工作分配,理論上真的可以按層次劃分了。只是理論上~

同時(shí),這樣的設(shè)計(jì)模式也是存在一定的缺點(diǎn)的:

層次太多,剛接觸的開發(fā)人員理解起來比簡(jiǎn)單的mvc結(jié)構(gòu)費(fèi)時(shí);

service層的設(shè)計(jì)需要一定的功力,因?yàn)閍ction中和model層的邏輯在很大程度上轉(zhuǎn)移到這里了。

但整體上看,serviceLayer的引入,更加清晰的定義了應(yīng)用程序的邊界,提供了一系列可以重用的操作集合。這對(duì)于網(wǎng)站的可擴(kuò)展性和可維護(hù)性是非常有幫助的。

當(dāng)然,如果網(wǎng)站的業(yè)務(wù)邏輯并不復(fù)雜,完全沒必要用這樣的設(shè)計(jì)。過度設(shè)計(jì)是萬惡之源~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 傳統(tǒng)模式下的開發(fā)MVCMVVM基于面向協(xié)議MVP的介紹MVP實(shí)戰(zhàn)開發(fā)說在前面:相信就算你是個(gè)iOS新手也應(yīng)該聽說過...
    行走的菜譜閱讀 3,304評(píng)論 1 5
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,687評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評(píng)論 25 709
  • 小咪剛到我家的時(shí)候,是個(gè)十足地“大胖子”,曾經(jīng)一度我想讓它減肥,但僅僅是想想而已。因?yàn)槲业凸懒怂梆I時(shí)候的煩人程度...
    蘇繆閱讀 219評(píng)論 3 4
  • 眼看著上一篇在幾個(gè)平臺(tái)的數(shù)據(jù)實(shí)現(xiàn)飛躍,粉絲量翻番,欣慰之余,陷入寢食難安地焦慮。本來是個(gè)說真話的樹洞,突然來了很多...
    楚雯談心閱讀 825評(píng)論 0 0

友情鏈接更多精彩內(nèi)容