創(chuàng)建一個(gè)簡(jiǎn)單的mvc項(xiàng)目 mvc的缺點(diǎn)和優(yōu)點(diǎn)?
mvc的缺點(diǎn)和優(yōu)點(diǎn)??jī)?yōu)點(diǎn):1.各施其職,互不干涉在MVC模式中,三個(gè)層各施其職,因此如果沒(méi)有一旦哪一層的需求發(fā)生了什么了變化,就只要更改后你所選的層中的代碼而肯定不會(huì)影響大到其它層中的代碼。2.能夠提
mvc的缺點(diǎn)和優(yōu)點(diǎn)?
優(yōu)點(diǎn):
1.各施其職,互不干涉
在MVC模式中,三個(gè)層各施其職,因此如果沒(méi)有一旦哪一層的需求發(fā)生了什么了變化,就只要更改后你所選的層中的代碼而肯定不會(huì)影響大到其它層中的代碼。
2.能夠提高開(kāi)發(fā)中的分工
在MVC模式中,因此按層把系統(tǒng)在一起,這樣就能更好的實(shí)現(xiàn)開(kāi)發(fā)中的分工。網(wǎng)頁(yè)設(shè)計(jì)人員可以進(jìn)行開(kāi)發(fā)視圖層中的JSP,對(duì)業(yè)務(wù)熟悉的開(kāi)發(fā)人員可開(kāi)發(fā)業(yè)務(wù)層,而其它開(kāi)發(fā)人員可變更土地性質(zhì)控制層。
3.能夠提高組件的重用
分層后更有利于組件的賞識(shí)。如再控制層可獨(dú)立成一個(gè)能是用組件,視圖層也可做成通用的操作界面。
設(shè)計(jì)模式可以說(shuō)實(shí)現(xiàn)了分層開(kāi)發(fā)。單獨(dú)的層都有各個(gè)層的作用。
5.減少了層與層之間的依戀,有利于代碼的標(biāo)準(zhǔn)化開(kāi)發(fā)
6.再用新的代碼業(yè)務(wù)邏輯替換時(shí),只必須重命名相填寫(xiě)的層,極大降底了我們的工作量,分工明確。
缺點(diǎn):
1.增強(qiáng)了系統(tǒng)結(jié)構(gòu)和基于的復(fù)雜性。相對(duì)于簡(jiǎn)單點(diǎn)的界面,嚴(yán)格按照MVC,使模型、視圖與控制器分離,會(huì)提高結(jié)構(gòu)的復(fù)雜性,并可能會(huì)出現(xiàn)過(guò)多的更新你操作,會(huì)降低運(yùn)行效率。
2.視圖與控制器間的過(guò)多松散的連接到。視圖與控制器是相互之間分離,但確實(shí)聯(lián)系密切的部件,視圖沒(méi)有控制器的存在,其應(yīng)用到是很不大的,反之亦然,這樣就傷害到了他們的獨(dú)立賞識(shí)。
3.視圖對(duì)模型數(shù)據(jù)的低效率訪問(wèn)。依據(jù)模型操作接口的不同,視圖可能需要過(guò)內(nèi)部函數(shù)才能完成任務(wù)充足的顯示數(shù)據(jù)。對(duì)未變化數(shù)據(jù)的不必要的不穩(wěn)定訪問(wèn)網(wǎng)絡(luò),也將損害操作性能。
4.目前,好象高級(jí)的界面工具或構(gòu)造器不意見(jiàn)MVC模式。內(nèi)部改造這些工具以慢慢適應(yīng)MVC必須和建立起再分離的部件的代價(jià)是很高的,使會(huì)造成可以使用MVC的困難。
5.麻煩,有些代碼亂詞的太多,則影響在換算開(kāi)發(fā)中建議使用,所以我我們要怎么學(xué)習(xí)框架,下面的鳥(niǎo)瞰圖分析什么了框架在MVC里都得用了哪些層。
如何實(shí)現(xiàn)MVC模式?
最簡(jiǎn)單的方法是使用struts或jsf等mvc的框架,本身是一個(gè)基于。如果不是自己利用,也很緊張的那是要自己寫(xiě)一個(gè)總控制器,得到所有用戶的請(qǐng)求,參與全部分給其他servlet或再接受頁(yè)面跳轉(zhuǎn)。不我建議你自己實(shí)現(xiàn)程序,見(jiàn)意可以使用一個(gè)mvc框架,接著搞明白他的生命周期和原理,再去看框架總控制器的源代碼,那樣都很好。
原理:
jsp發(fā)展遇到了兩個(gè)模型時(shí)代,jsp模型一時(shí)代是把代碼都寫(xiě)在jsp頁(yè)面上,用戶不能訪問(wèn)jsp頁(yè)面時(shí),jsp頁(yè)面來(lái)對(duì)數(shù)據(jù)庫(kù)參與操作并返回值到j(luò)sp頁(yè)面,這樣第一不好維護(hù),第二安全性不高,第三代碼結(jié)構(gòu)不比較清晰,第四重用性不高。只好就有了jsp模型二時(shí)代,人們將所有的頁(yè)面幫忙交給你們一個(gè)servlet控制器來(lái)進(jìn)行,然后把并且清點(diǎn),由該servlet來(lái)判斷動(dòng)態(tài)鏈接庫(kù)其他servlet訪問(wèn)數(shù)據(jù)庫(kù)應(yīng)該通過(guò)頁(yè)面跳轉(zhuǎn),這個(gè)servelt那就是MVC中的C,struts中像叫ActionServlet,Jsf中叫FacesServelt,web.xml中配置的那就是總servlet控制器,是為更好的分層,委以重任,減少依賴性,就有了MVC,由M層得到和手機(jī)綁定用戶的數(shù)據(jù),V層通過(guò)充分展現(xiàn),C層參與控制。
目前主流的開(kāi)發(fā)模式是四層開(kāi)發(fā)模式:界面層(page)動(dòng)作一次性處理層(action)業(yè)務(wù)邏輯層(service)數(shù)據(jù)訪問(wèn)層(dao),page層應(yīng)用于充分展現(xiàn)頁(yè)面,action層用于捕獲用戶事件并調(diào)用service層一次性處理業(yè)務(wù)邏輯,service要一次性處理業(yè)務(wù)邏輯肯定就要對(duì)數(shù)據(jù)庫(kù)并且增刪改查,拼接HQL語(yǔ)句,然后調(diào)用dao層對(duì)數(shù)據(jù)庫(kù)通過(guò)操作,hibernate結(jié)束的就是DAO層。不過(guò)這樣一來(lái)action層對(duì)service層出現(xiàn)了依賴,畢竟要修改一個(gè)service接口的摘錄,service層對(duì)dao層出現(xiàn)了依賴,那就是說(shuō)類(lèi)的對(duì)象一個(gè)action層的對(duì)象,同時(shí)要最起碼實(shí)例化一個(gè)service層和最起碼構(gòu)造函數(shù)一個(gè)dao層,于是spring的IOC就這個(gè)可以起作用了,就這個(gè)可以會(huì)降低各層之間的依賴。將各層做為接口對(duì)象實(shí)例配置到spring中,降低依賴。