三層架構(gòu)與MVC簡單區(qū)分

我們平時總是將三層架構(gòu)與MVC混為一談布朦,殊不知它倆并不是一個概念煞烫。

首先,它倆根本不是一個概念猴鲫。

  • 三層架構(gòu)是一個分層式的軟件體系架構(gòu)設(shè)計对人,它可適用于任何一個項目。
  • MVC是一個設(shè)計模式拂共,它是根據(jù)項目的具體需求來決定是否適用于該項目牺弄。
  • 那么架構(gòu)跟設(shè)計模式有什么區(qū)別呢?
  • 我們從接手一個項目開始宜狐,首先势告,我們需要進行架構(gòu)設(shè)計,一般我們采用的就是分層式的架構(gòu)設(shè)計肌厨,即我們的三層架構(gòu)培慌。
      然后,在確定了架構(gòu)以后柑爸,我們再根據(jù)項目的具體需求去考慮是否需要應(yīng)用一些設(shè)計模式吵护,比如是否應(yīng)用我們的MVC模式,抽象工廠模式等等。(在這里我們看出馅而,MVC與三層架構(gòu)不是一個等級的祥诽,而與抽象工廠等設(shè)計模式才是一路的)
      最后,確定了模式以后瓮恭,就是我們的一些具體的實現(xiàn)了雄坪。(當(dāng)然一個項目不僅僅考慮這些問題,我只是為了說明兩者的區(qū)別屯蹦,將其他問題已省略)
    其次维哈,它倆劃分的層次不同。
      三層架構(gòu)將整個項目劃分為:表現(xiàn)層(UI)登澜、業(yè)務(wù)邏輯層(BLL)阔挠、數(shù)據(jù)訪問層(DAL)。
      MVC 即Model(模型)脑蠕,View(視圖)购撼,Controller(控制)。
      下面看一下他倆的區(qū)別與聯(lián)系:



      通過這個圖我們可以知道谴仙,我們平常所說的V是UI迂求,C是BLL,M是DAL的觀點是錯誤的晃跺。
      而我們通常所見到的MVC一般也都是在應(yīng)用三層架構(gòu)的基礎(chǔ)上揩局,即將Model層再進行分層。而如果Model不再進行劃分的話掀虎,那么使用MVC的意義也就不大了谐腰。

然后,它倆的目的著重點不同涩盾。

三層架構(gòu)的目的著重點是“高內(nèi)聚,低耦合”励背,即解耦春霍。
  MVC的目的則是實現(xiàn)Web系統(tǒng)的職能分工,即職責(zé)劃分叶眉。
  其實職責(zé)劃分也是解耦址儒,但是三層側(cè)重的是整體的一個解耦,而MVC側(cè)重的是web系統(tǒng)的解耦衅疙,即側(cè)重jsp和Servlet的一個解耦莲趣。

最后,為何我們會將其混為一談饱溢?

既然兩者有這么多的不同喧伞,我們?yōu)槭裁催€總是將其混淆呢,下面我列舉了幾個我們常常將其混為一談的幾個原因:
  1.二者都是“三層”。
  這個原因是最容易迷惑我們初學(xué)者的潘鲫,一個是UI,BLL,DAL翁逞,一個是View,Controller溉仑,Model挖函,不都是三層嗎?
  雖然都是“三層”(不一定是真的三層浊竟,還可以是多層)怨喘,但是它們的劃分的不一樣。大家可從上面的圖中看出不同振定。
  2.MVC總是伴隨著三層架構(gòu)必怜。
  這個就是我在前面一再強調(diào)的,我們一般是在考慮使用(也可以不使用)了三層架構(gòu)的基礎(chǔ)上再根據(jù)具體需求決定是否需要使用MVC吩案,于是我們常說的MVC中總是伴隨著三層架構(gòu)棚赔,所以大家總是會認為MVC就是三層架構(gòu),三層架構(gòu)就是MVC徘郭,殊不知靠益,它們二者是一起出現(xiàn)的。
  3.都是在分層残揉,即都是在解耦胧后。
  前面說它們目的的時候也說了,雖然它們的側(cè)重點不同抱环,但是它們的總體目的是一樣的壳快,都是為了解耦,對于初學(xué)者而言镇草,是不知道這兩個側(cè)重點有何不同的眶痰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梯啤,隨后出現(xiàn)的幾起案子竖伯,更是在濱河造成了極大的恐慌,老刑警劉巖因宇,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件七婴,死亡現(xiàn)場離奇詭異,居然都是意外死亡察滑,警方通過查閱死者的電腦和手機打厘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贺辰,“玉大人户盯,你說我怎么就攤上這事嵌施。” “怎么了先舷?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵艰管,是天一觀的道長。 經(jīng)常有香客問我蒋川,道長牲芋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任捺球,我火速辦了婚禮缸浦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氮兵。我一直安慰自己裂逐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布泣栈。 她就那樣靜靜地躺著卜高,像睡著了一般。 火紅的嫁衣襯著肌膚如雪南片。 梳的紋絲不亂的頭發(fā)上掺涛,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音疼进,去河邊找鬼薪缆。 笑死,一個胖子當(dāng)著我的面吹牛伞广,可吹牛的內(nèi)容都是我干的拣帽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚼锄,長吁一口氣:“原來是場噩夢啊……” “哼减拭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起区丑,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤峡谊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刊苍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡濒析,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年正什,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片号杏。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡婴氮,死狀恐怖斯棒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情主经,我是刑警寧澤荣暮,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站罩驻,受9級特大地震影響穗酥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惠遏,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一砾跃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧节吮,春花似錦抽高、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帚豪,卻和暖如春碳竟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背志鞍。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工瞭亮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人固棚。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓统翩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親此洲。 傳聞我的和親對象是個殘疾皇子厂汗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 又看到有人在問三層架構(gòu)和MVC的關(guān)系,感覺這種問題有點教條化了呜师。因為它們都在邏輯上將應(yīng)用程序劃為三塊娶桦,湊了一個數(shù)字...
    Ludiwgbet閱讀 1,887評論 1 12
  • 三層架構(gòu)和MVC是有明顯區(qū)別的,MVC應(yīng)該是展現(xiàn)模式(三個加起來以后才是三層架構(gòu)中的UI層) 三層架構(gòu)(3-tie...
    李大西瓜閱讀 357評論 0 0
  • 三層架構(gòu)和MVC 三層架構(gòu) (3-tier application) 是將整個業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)...
    hnscdg閱讀 1,774評論 0 8
  • 1.從傳統(tǒng)三層架構(gòu)與DDD分層架構(gòu)的編程演變其實是思想的演變汁汗。 傳統(tǒng)三層架構(gòu)衷畦,即用戶界面層UI、業(yè)務(wù)邏輯層BAL知牌、...
    咖啡電視閱讀 8,217評論 0 6
  • 一祈争、MVC與三層架構(gòu)的異同 1.不同點 三層架構(gòu)是程序設(shè)計的一種典型架構(gòu)方式,確立項目后首先做的是對其進...
    LQC閱讀 4,682評論 0 3