MVC設(shè)計模式

MVC簡介

MVC(Model-View-Controller) 模式的基本思想是數(shù)據(jù)币砂,顯示和處理相分離绵估。模型(Model)負(fù)責(zé)數(shù)據(jù)管理,視圖(View)負(fù)責(zé)數(shù)據(jù)顯示亲族,控制器(Controller)負(fù)責(zé)業(yè)務(wù)邏輯和響應(yīng)策略崔慧。

用戶界面邏輯的更改往往比業(yè)務(wù)邏輯頻繁拂蝎,尤其是在基于Web的應(yīng)用程序中。例如惶室,可能添加新的用戶界面頁温自,或者可能完全打亂現(xiàn)有的頁面布局。對顯示的更改皇钞,盡可能地不要影響到數(shù)據(jù)和業(yè)務(wù)邏輯悼泌。

為什么要用MVC

目前大部分Web應(yīng)用都是將數(shù)據(jù)代碼和表示混在一起。經(jīng)驗比較豐富的開發(fā)者會將數(shù)據(jù)從表示層分離開來鹅士,但這通常不是很容易做到的券躁,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開掉盅。盡管構(gòu)造MVC應(yīng)用需要一些額外的工作也拜,但它帶來的好處是無庸質(zhì)疑的

圖解

image.png

視圖(View):
  視圖是用戶看到并與之交互的界面。對老式的Web應(yīng)用程序來說趾痘,視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中永票,HTML依舊在視圖中扮演著重要的角色卵贱,但一些新的技術(shù)已層出不窮,它們包括Adobe Flash和象XHTML侣集,XML/XSL键俱,WML等一些標(biāo)識語言和Web services。如何處理應(yīng)用程序的界面變得越來越有挑戰(zhàn)性世分。MVC一個大的好處是它能為你的應(yīng)用程序處理很多不同的視圖编振。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機存儲的還是一個雇員列表臭埋,作為視圖來講踪央,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。

模型 (Model):
模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則瓢阴。在MVC的三個部件中畅蹂,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusion Components這樣的構(gòu)件對象來處理數(shù)據(jù)庫荣恐。被模型返回的數(shù)據(jù)是中立的液斜,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù)叠穆。由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用少漆,所以減少了代碼的重復(fù)性。

控制器(Controller):
  控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求痹束。所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時检疫,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求祷嘶,然后確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)屎媳。

現(xiàn)在我們總結(jié)MVC的處理過程,首先控制器接收用戶的請求论巍,并決定應(yīng)該調(diào)用哪個模型來進行處理烛谊,然后模型用業(yè)務(wù)邏輯來處理用戶的請求并返回數(shù)據(jù),最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù)嘉汰,并通過表示層呈現(xiàn)給用戶

優(yōu)點

MVC的優(yōu)點體現(xiàn)在以下幾個方面:

(1) 有利于團隊開發(fā)分工協(xié)作和質(zhì)量控制丹禀,降低開發(fā)成本。
(2) 可以為一個模型在運行時同時建立和使用多個視圖。變化-傳播機制可以確保所有相關(guān)的視圖及時得到模型數(shù)據(jù)變化双泪,從而使所有關(guān)聯(lián)的視圖和控制器做到行為同步持搜。
(3) 視圖與控制器的可接插性,允許更換視圖和控制器對象焙矛,而且可以根據(jù)需求動態(tài)的打開或關(guān)閉葫盼、甚至在運行期間進行對象替換。
(4) 模型的可移植性村斟。因為模型是獨立于視圖的贫导,所以可以把一個模型獨立地移植到新的平臺工作。需要做的只是在新平臺上對視圖和控制器進行新的修改蟆盹。
(5) 潛在的框架結(jié)構(gòu)孩灯。可以基于此模型建立應(yīng)用程序框架逾滥,不僅僅是用在設(shè)計界面的設(shè)計中峰档。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匣距,隨后出現(xiàn)的幾起案子面哥,更是在濱河造成了極大的恐慌,老刑警劉巖毅待,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚卫,死亡現(xiàn)場離奇詭異,居然都是意外死亡尸红,警方通過查閱死者的電腦和手機吱涉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來外里,“玉大人怎爵,你說我怎么就攤上這事≈鸦龋” “怎么了鳖链?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長墩莫。 經(jīng)常有香客問我芙委,道長,這世上最難降的妖魔是什么狂秦? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任灌侣,我火速辦了婚禮,結(jié)果婚禮上裂问,老公的妹妹穿的比我還像新娘侧啼。我一直安慰自己牛柒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布痊乾。 她就那樣靜靜地躺著皮壁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪符喝。 梳的紋絲不亂的頭發(fā)上闪彼,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天甜孤,我揣著相機與錄音协饲,去河邊找鬼。 笑死缴川,一個胖子當(dāng)著我的面吹牛茉稠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播把夸,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼而线,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恋日?” 一聲冷哼從身側(cè)響起膀篮,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岂膳,沒想到半個月后誓竿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡谈截,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年筷屡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片簸喂。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡毙死,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喻鳄,到底是詐尸還是另有隱情扼倘,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布除呵,位于F島的核電站再菊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏竿奏。R本人自食惡果不足惜袄简,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泛啸。 院中可真熱鬧绿语,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匹耕,卻和暖如春聚请,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稳其。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工驶赏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人既鞠。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓煤傍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嘱蛋。 傳聞我的和親對象是個殘疾皇子蚯姆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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