首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 繽紛校園 英語學(xué)習(xí)
2010考研 | 自學(xué)考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務(wù)英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點(diǎn)英、、、、韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 報(bào)檢員 | 外銷員 | 司法考試 | 導(dǎo)游考試 | 教師資格 | 國際商務(wù)師 | 跟單員
單證員 | 物流師 | 價(jià)格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會(huì)工作者
會(huì)計(jì)職稱 | 注會(huì)CPA | 經(jīng)濟(jì)師 | 統(tǒng)計(jì)師 | 注冊稅務(wù)師 | 評估師 | 精算師 | 高會(huì) | ACCA | 審計(jì)師
法律顧問 | 會(huì)計(jì)證
一級建造師 | 二級建造師 | 造價(jià)師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結(jié)構(gòu)師 | 建筑師 | 安全評價(jià)師
房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 設(shè)備監(jiān)理師 | 巖土工程師 | 質(zhì)量資格 | 房地產(chǎn)經(jīng)紀(jì)人 | 造價(jià)員
投資項(xiàng)目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價(jià) | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價(jià)工程師 | 招標(biāo)師
執(zhí)業(yè)護(hù)士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統(tǒng)分析師 > 正文

MVC模式的基本概念[3]

2.3 模型

  MVC系統(tǒng)中的模型從概念上可以分為兩類――系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動(dòng)作。模型是你所有的商業(yè)邏輯代碼片段所在。為模型提供了業(yè)務(wù)實(shí)體對象和業(yè)務(wù)處理對象:所有的業(yè)務(wù)處理對象都是從ProcessBase類派生的子類。業(yè)務(wù)處理對象封裝了具體的處理邏輯,調(diào)用業(yè)務(wù)邏輯模型,并且把響應(yīng)提交到合適的視圖組件以產(chǎn)生響應(yīng)。業(yè)務(wù)實(shí)體對象可以通過定義屬性描述客戶端表單數(shù)據(jù)。所有業(yè)務(wù)實(shí)體對象都EntityBase派生子類對象,業(yè)務(wù)處理對象可以直接對它進(jìn)行讀寫,而不再需要和request、response對象進(jìn)行數(shù)據(jù)交互。通過業(yè)務(wù)實(shí)體對象實(shí)現(xiàn)了對視圖和模型之間交互的支持。實(shí)現(xiàn)時(shí)把"做什么"(業(yè)務(wù)處理)和"如何做"(業(yè)務(wù)實(shí)體)分離。這樣可以實(shí)現(xiàn)業(yè)務(wù)邏輯的重用。由于各個(gè)應(yīng)用的具體業(yè)務(wù)是不同的,這里不再列舉其具體代碼實(shí)例。

  ASP.NET提供了一個(gè)很好的實(shí)現(xiàn)這種經(jīng)典設(shè)計(jì)模式的類似環(huán)境。開發(fā)者通過在ASPX頁面中開發(fā)用戶接口來實(shí)現(xiàn)視圖;控制器的功能在邏輯功能代碼(.cs)中實(shí)現(xiàn);模型通常對應(yīng)應(yīng)用系統(tǒng)的業(yè)務(wù)部分。在ASP.NET中實(shí)現(xiàn)這種設(shè)計(jì)而提供的一個(gè)多層系統(tǒng),較經(jīng)典的ASP結(jié)構(gòu)實(shí)現(xiàn)的系統(tǒng)來說有明顯的優(yōu)點(diǎn)。將用戶顯示(視圖)從動(dòng)作(控制器)中分離出來,提高了代碼的重用性。將數(shù)據(jù)(模型)從對其操作的動(dòng)作(控制器)分離出來可以讓你設(shè)計(jì)一個(gè)與后臺存儲數(shù)據(jù)無關(guān)的系統(tǒng)。就MVC結(jié)構(gòu)的本質(zhì)而言,它是一種解決耦合系統(tǒng)問題的方法。

  三、MVC的優(yōu)點(diǎn)

  大部分用過程語言比如ASP、PHP開發(fā)出來的Web應(yīng)用,初始的開發(fā)模板就是混合層的數(shù)據(jù)編程。例如,直接向數(shù)據(jù)庫發(fā)送請求并用HTML顯示,開發(fā)速度往往比較快,但由于數(shù)據(jù)頁面的分離不是很直接,因而很難體現(xiàn)出業(yè)務(wù)模型的樣子或者模型的重用性。產(chǎn)品設(shè)計(jì)彈性力度很小,很難滿足用戶的變化性需求。MVC要求對應(yīng)用分層,雖然要花費(fèi)額外的工作,但產(chǎn)品的結(jié)構(gòu)清晰,產(chǎn)品的應(yīng)用通過模型可以得到更好地體現(xiàn)。

  首先,最重要的是應(yīng)該有多個(gè)視圖對應(yīng)一個(gè)模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應(yīng)用的要求。例如,訂單模型可能有本系統(tǒng)的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對于訂單的處理都是一樣,也就是說訂單的處理是一致的。按MVC設(shè)計(jì)模式,一個(gè)訂單模型以及多個(gè)視圖即可解決問題。這樣減少了代碼的復(fù)制,即減少了代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維護(hù)。 其次,由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應(yīng)用于接口的使用。

  再次,由于一個(gè)應(yīng)用被分離為三層,因此有時(shí)改變其中的一層就能滿足應(yīng)用的改變。一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需改動(dòng)MVC的模型層。

  控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起完成不同的請求,因此,控制層可以說是包含了用戶請求權(quán)限的概念。

  最后,它還有利于軟件工程化管理。由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化產(chǎn)生管理程序代碼。

  四、MVC的不足

  MVC的不足體現(xiàn)在以下幾個(gè)方面

 。1)增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性。對于簡單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會(huì)增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的更新操作,降低運(yùn)行效率。

 。2)視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實(shí)聯(lián)系緊密的部件,視圖沒有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨(dú)立重用。

 。3)視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。

  (4) 目前,一般高級的界面工具或構(gòu)造器不支持MVC模式。改造這些工具以適應(yīng)MVC需要和建立分離的部件的代價(jià)是很高的,從而造成使用MVC的困難。  

 

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索
MVC模式的基本概念[3]網(wǎng)友評論網(wǎng)友評論
版權(quán)聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
 gaoxiaoliang