?? mvc模式.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0050)http://www.itisedu.com/phrase/200604231324325.html -->
<HTML><HEAD><TITLE>MVC模式</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD>
<BODY>
<CENTER>
<H1>MVC模式</H1></CENTER>
<P>因業務需要,“中科永聯”正式更名為“中程在線”,歡迎大家瀏覽新網站“<A
href="http://www.miiceic.org.cn/">中程在線信息產業培訓網</A>”</P>
<DIV>
<P align=right><FONT face=Verdana><FONT face=Verdana><FONT color=#f70938><FONT
face=黑體><A href="http://www.itisedu.com/phrase/200604112229525.html"
target=_new>中科永聯</A>高級技術培訓中心(</FONT><FONT face=黑體>www.itisedu.com</FONT><FONT
face=黑體>)<IMG src="MVC模式.files/200632721166552.jpg"
border=0></FONT></FONT></FONT></FONT></P>
<P><FONT face=Verdana> <A
href="http://www.itisedu.com/phrase/200604231324325.html"
target=_new>MVC模式</A>是"Model-View-Controller"的縮寫,中文翻譯為"<A
href="http://www.itisedu.com/phrase/200603061709535.html" target=_new>模式</A>-<A
href="http://www.itisedu.com/phrase/200603141659315.html"
target=_new>視圖</A>-控制器"。<A
href="http://www.itisedu.com/phrase/200603071552065.html"
target=_new>MVC</A>應用<A
href="http://www.itisedu.com/phrase/200604232224305.html"
target=_new>程序</A>總是由這三個部分組成。Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的數據或者屬性,所有依賴的View都會自動更新。<A
href="http://www.itisedu.com/phrase/200603090857555.html"
target=_new>類</A>似的,只要Controller改變了View,View會從潛在的Model中獲取數據來刷新自己。MVC模式最早是smalltalk語言研究團提出的,應用于用戶交互應用程序中。smalltalk語言和java語言有很多相似性,都是<A
href="http://www.itisedu.com/phrase/200603010948085.html"
target=_new>面向對象語言</A>,很自然的SUN在petstore(寵物店)事例應用程序中就推薦MVC模式作為開發Web應用的<A
href="http://www.itisedu.com/phrase/200604241328115.html"
target=_new>架構</A>模式。MVC模式是一種架構模式,其實需要其他模式協作完成。在<A
href="http://www.itisedu.com/phrase/200603091447335.html"
target=_new>J2EE</A>模式目錄中,通常采用service to worker模式實現,而service to
worker模式可由集中控制器模式,派遣器模式和Page Helper模式組成。而<A
href="http://www.itisedu.com/phrase/200605110915235.html"
target=_new>Struts</A>只實現了MVC的View和Controller兩個部分,Model部分需要開發者自己來實現,Struts提供了抽象類Action使開發者能將Model應用于Struts<A
href="http://www.itisedu.com/phrase/200603061723295.html"
target=_new>框架</A>中。</FONT></P>
<P><FONT face=Verdana>
MVC模式是一個復雜的架構模式,其實現也顯得非常復雜。但是,我們已經終結出了很多可靠的<A
href="http://www.itisedu.com/phrase/200603061631585.html"
target=_new>設計模式</A>,多種設計模式結合在一起,使MVC模式的實現變得相對簡單易行。Views可以看作一棵樹,顯然可以用Composite
<A href="http://www.itisedu.com/phrase/200604231320535.html"
target=_new>Pattern</A>來實現。Views和Models之間的關系可以用Observer
Pattern體現。Controller控制Views的顯示,可以用Strategy Pattern實現。Model通常是一個調停者,可采用Mediator
Pattern來實現。</FONT></P>
<P><FONT face=Verdana>
現在讓我們來了解一下MVC三個部分在J2EE架構中處于什么位置,這樣有助于我們理解MVC模式的實現。MVC與J2EE架構的對應關系是:View處于Web
Tier或者說是<A href="http://www.itisedu.com/phrase/200604241148385.html"
target=_new>Client Tier</A>,通常是JSP/<A
href="http://www.itisedu.com/phrase/200603091005185.html"
target=_new>Servlet</A>,即頁面顯示部分。Controller也處于Web
Tier,通常用Servlet來實現,即頁面顯示的邏輯部分實現。Model處于<A
href="http://www.itisedu.com/phrase/200604241147165.html" target=_new>Middle
Tier</A>,通常用服務端的<A href="http://www.itisedu.com/phrase/200604251741535.html"
target=_new>javaBean</A>或者<A
href="http://www.itisedu.com/phrase/200604241156485.html"
target=_new>EJB</A>實現,即業務邏輯部分的實現。</FONT></P>
<P><FONT face=Verdana><STRONG>一、MVC設計思想</STRONG></FONT></P>
<P><FONT
face=Verdana> MVC英文即Model-View-Controller,即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。
</FONT></P>
<P><FONT face=Verdana> 視圖(View)代表用戶交互界面,對于Web應用來說,可以概括為HTML界面,但有可能為XHTML、<A
href="http://www.itisedu.com/phrase/200604231236585.html" target=_new>XML</A>和<A
href="http://www.itisedu.com/phrase/200604201518585.html"
target=_new>Applet</A>。隨著應用的復雜性和規模性,界面的處理也變得具有挑戰性。一個應用可能有很多不同的視圖,MVC設計模式對于視圖的處理僅限于視圖上數據的采集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。業務流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數據并顯示給用戶,以及將用戶界面的輸入數據和請求傳遞給控制和模型。
</FONT></P>
<P><FONT
face=Verdana> 模型(Model):就是業務流程/狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數據,并返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。目前流行的EJB模型就是一個典型的應<A
href="http://www.itisedu.com/phrase/200604240937105.html"
target=_new>用例</A>子,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的<A
href="http://www.itisedu.com/phrase/200603302222545.html"
target=_new>組件</A>,但它不能作為應用<A
href="http://www.itisedu.com/phrase/200604161258515.html"
target=_new>設計模型</A>的框架。它僅僅告訴你按這種模型設計就可以利用某些技術組件,從而減少了技術上的困難。對一個開發者來說,就可以專注于業務模型的設計。MVC設計模式告訴我們,把應用的模型按一定的規則抽取出來,抽取的層次很重要,這也是判斷開發人員是否優秀的設計依據。抽象與具體不能隔得太遠,也不能太近。MVC并沒有提供模型的設計方法,而只告訴你應該組織管理這些模型,以便于模型的<A
href="http://www.itisedu.com/phrase/200603121222205.html"
target=_new>重構</A>和提高重用性。我們可以用<A
href="http://www.itisedu.com/phrase/200603090845215.html"
target=_new>對象</A>編程來做比喻,MVC定義了一個頂級類,告訴它的子類你只能做這些,但沒法限制你能做這些。這點對編程的開發人員非常重要。
</FONT></P>
<P><FONT face=Verdana> 業務模型還有一個很重要的模型那就是數據模型。數據模型主要指實體對象的數據
保存(持續化)。比如將一張訂單保存到<A href="http://www.itisedu.com/phrase/200602271218062.html"
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -