自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

三層架構(gòu)與MVC謎團(tuán)之答案揭曉

開(kāi)發(fā) 后端
我們平時(shí)總是將三層架構(gòu)與MVC混為一談,殊不知它倆并不是一個(gè)概念。下面我來(lái)為大家揭曉我所知道的一些真相。

我們平時(shí)總是將三層架構(gòu)與MVC混為一談,殊不知它倆并不是一個(gè)概念。下面我來(lái)為大家揭曉我所知道的一些真相。

 

首先,它倆根本不是一個(gè)概念。

 

三層架構(gòu)是一個(gè)分層式的軟件體系架構(gòu)設(shè)計(jì),它可適用于任何一個(gè)項(xiàng)目。

MVC是一個(gè)設(shè)計(jì)模式,它是根據(jù)項(xiàng)目的具體需求來(lái)決定是否適用于該項(xiàng)目。

 

那么架構(gòu)跟設(shè)計(jì)模式有什么區(qū)別呢?

我們從接手一個(gè)項(xiàng)目開(kāi)始,首先,我們需要進(jìn)行架構(gòu)設(shè)計(jì),一般我們采用的就是分層式的架構(gòu)設(shè)計(jì),即我們的三層架構(gòu)。

 

然后,在確定了架構(gòu)以后,我們?cè)俑鶕?jù)項(xiàng)目的具體需求去考慮是否需要應(yīng)用一些設(shè)計(jì)模式,比如是否應(yīng)用我們的MVC模式,抽象工廠模式等等。(在這里我們看出,MVC與三層架構(gòu)不是一個(gè)等級(jí)的,而與抽象工廠等設(shè)計(jì)模式才是一路的)

 

最后,確定了模式以后,就是我們的一些具體的實(shí)現(xiàn)了。(當(dāng)然一個(gè)項(xiàng)目不僅僅考慮這些問(wèn)題,我只是為了說(shuō)明兩者的區(qū)別,將其他問(wèn)題已省略)

 

其次,它倆劃分的層次不同。

三層架構(gòu)將整個(gè)項(xiàng)目劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問(wèn)層(DAL)。

MVC即Model(模型),View(視圖),Controller(控制)。

 

下面看一下他倆的區(qū)別與聯(lián)系:

 

通過(guò)這個(gè)圖我們可以知道,我們平常所說(shuō)的V是UI,C是BLL,M是DAL的觀點(diǎn)是錯(cuò)誤的。

而我們通常所見(jiàn)到的MVC一般也都是在應(yīng)用三層架構(gòu)的基礎(chǔ)上,即將Model層再進(jìn)行分層。而如果Model不再進(jìn)行劃分的話,那么使用MVC的意義也就不大了。

 

然后,它倆的目的著重點(diǎn)不同。

三層架構(gòu)的目的著重點(diǎn)是“高內(nèi)聚,低耦合”,即解耦。

MVC的目的則是實(shí)現(xiàn)Web系統(tǒng)的職能分工,即職責(zé)劃分。

其實(shí)職責(zé)劃分也是解耦,但是三層側(cè)重的是整體的一個(gè)解耦,而MVC側(cè)重的是web系統(tǒng)的解耦,即側(cè)重jsp和Servlet的一個(gè)解耦。

 

最后,為何我們會(huì)將其混為一談?

既然兩者有這么多的不同,我們?yōu)槭裁催€總是將其混淆呢,下面我列舉了幾個(gè)我們常常將其混為一談的幾個(gè)原因:

1.二者都是“三層”。

這個(gè)原因是最容易迷惑我們初學(xué)者的,一個(gè)是UI,BLL,DAL,一個(gè)是View,Controller,Model,不都是三層嗎?

雖然都是“三層”(不一定是真的三層,還可以是多層),但是它們的劃分的不一樣。大家可從上面的圖中看出不同。

 

2.MVC總是伴隨著三層架構(gòu)。

這個(gè)就是我在前面一再?gòu)?qiáng)調(diào)的,我們一般是在考慮使用(也可以不使用)了三層架構(gòu)的基礎(chǔ)上再根據(jù)具體需求決定是否需要使用MVC,于是我們常說(shuō)的MVC中總是伴隨著三層架構(gòu),所以大家總是會(huì)認(rèn)為MVC就是三層架構(gòu),三層架構(gòu)就是MVC,殊不知,它們二者是一起出現(xiàn)的。

 

3.都是在分層,即都是在解耦。

前面說(shuō)它們目的的時(shí)候也說(shuō)了,雖然它們的側(cè)重點(diǎn)不同,但是它們的總體目的是一樣的,都是為了解耦,對(duì)于初學(xué)者而言,是不知道這兩個(gè)側(cè)重點(diǎn)有何不同的。

 

大家往往對(duì)它們的聯(lián)系知道很多,不然也不會(huì)混為一談,但是對(duì)它們的區(qū)別卻知道較少,希望我上面講解的它們兩者之間的區(qū)別可以讓大家對(duì)它們有些了解,如有寫的不妥的地方,請(qǐng)指教。

原文鏈接:http://blog.csdn.net/zhaodandan19910306/article/details/7202463

【編輯推薦】

  1. Java處理字符串搜索嵌套結(jié)構(gòu)的方法
  2. 你了解JavaScript中的function嗎?
  3. Java編程:常見(jiàn)問(wèn)題匯總
  4. Java數(shù)據(jù)庫(kù)連接代碼集合
  5. Java Thread的概述與總結(jié)
責(zé)任編輯:林師授 來(lái)源: zhaodandan19910306博客
相關(guān)推薦

2009-04-21 11:27:52

MVCJSPJDBC

2009-04-30 15:56:50

三層架構(gòu)MVCMVP

2009-07-28 15:08:50

MVC三層架構(gòu)實(shí)例

2011-08-08 14:14:03

架構(gòu)

2009-04-30 09:15:25

三層結(jié)構(gòu)MVC架構(gòu)

2011-04-19 13:53:41

三層架構(gòu)

2019-07-26 08:39:29

JavaWebMVC

2018-03-08 15:30:31

超融合架構(gòu)傳統(tǒng)三層架構(gòu)

2009-08-26 18:20:42

三層架構(gòu)

2013-01-09 11:00:20

架構(gòu)開(kāi)發(fā)三層架構(gòu).NET架構(gòu)

2009-07-28 17:25:14

ASP.NET三層結(jié)構(gòu)

2012-02-03 09:44:33

.NET

2015-07-02 10:57:11

General框架架構(gòu)開(kāi)發(fā)

2018-10-31 14:32:53

數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)

2009-05-06 09:40:04

LINQWEB開(kāi)發(fā)構(gòu)架

2010-01-04 09:15:19

三層交換技術(shù)

2012-08-02 11:05:04

系統(tǒng)建模架構(gòu)

2014-02-12 10:07:07

三層交換原理

2011-05-12 14:24:14

三層架構(gòu)

2013-03-04 10:40:34

三層架構(gòu)架構(gòu)設(shè)計(jì)
點(diǎn)贊
收藏

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