同樣是架構(gòu)級別的,它們有什么相同點和不同點呢?這篇文章討論一下它們的異同點。希望能幫助讀者理解其中的玄機。 :)
其實它們相同的地方在于他們都有一個表現(xiàn)層。
但是他們不同的地方在于其他的兩個層。
首先先解釋一下MVC。V即View.是視圖的意思。C即Controler.是控制器的意思。而M即Model,是模型的意思。這三個里.最不容易理解的應(yīng)該是Model.就是什么是Model,而為什么叫Model。我先不說為什么叫Model,先解釋Controler。
Controller是控制器的意思,所謂控制器,就是將用戶請求轉(zhuǎn)發(fā)給模型層,經(jīng)過處理后把結(jié)果返回到界面展現(xiàn)的一個中間層,那么Controler到底管什么工作呢?先不說.先來看下在Java Web中這三個層一般的定義,一般在Java Web里,JSP充當(dāng)V,Servlet充當(dāng)C,JavaBean充當(dāng)M,這里的Servlet管什么工作呢?接受輸入,轉(zhuǎn)到Model層去處理,處理結(jié)果保存后轉(zhuǎn)發(fā)到JSP,然后展現(xiàn)數(shù)據(jù)。所以它的功能就是控制器的基本功能,它就管轉(zhuǎn)發(fā),在V和M之間轉(zhuǎn)來轉(zhuǎn)去。
再來說說M,即Model,在Java Web里說的是JavaBean,我認識的很多人都把JavaBean誤認為是實體類,其實JavaBean有比實體類更豐富的定義,在JavaBean中除了其屬性和字段,還可以有行為及其事件,JavaBean可以理解為普通Java對象。Java普通對象,就是符合Java規(guī)范的所有對象,這和實體類完全是兩回事。所以,我認為在MVC中。業(yè)務(wù)邏輯和數(shù)據(jù)訪問應(yīng)該放在Model層,也就是V負責(zé)展示數(shù)據(jù),Controler除了轉(zhuǎn)發(fā)不做業(yè)務(wù)邏輯。真正的邏輯事務(wù),數(shù)據(jù)訪問,甚至算法都放到Model去。
再說三層架構(gòu)。三層其實很好理解,界面,業(yè)務(wù),數(shù)據(jù)訪問,就這三個,從字面都可以理解出它們的意思。我要說的是它和MVC的區(qū)別。在三層架構(gòu)中沒有定義Controler的概念。這是我認為最不同的地方。而MVC也沒有把業(yè)務(wù)的邏輯訪問看成兩個層,這是采用三層架構(gòu)或MVC搭建程序最主要的區(qū)別。
當(dāng)然了。在三層中也提到了Model,但是三層架構(gòu)中Model的概念與MVC中Model的概念是不一樣的,“三層”中典型的Model層是已實體類構(gòu)成的,而MVC里,則是由業(yè)務(wù)邏輯與訪問數(shù)據(jù)組成的。不一樣的概念。雖然名字一樣。