用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹

用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹

ID:40311539

大?。?41.04 KB

頁(yè)數(shù):16頁(yè)

時(shí)間:2019-07-30

用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹_第1頁(yè)
用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹_第2頁(yè)
用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹_第3頁(yè)
用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹_第4頁(yè)
用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹_第5頁(yè)
資源描述:

《用C#實(shí)現(xiàn)MVC(Model View Control)模式介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、用C#實(shí)現(xiàn)MVC(ModelViewControl)模式介紹益處在我們的開發(fā)項(xiàng)目中使用MVC(Model-View-Control)模式的益處是,可以完全降低業(yè)務(wù)層和應(yīng)用表示層的相互影響。此外,我們會(huì)有完全獨(dú)立的對(duì)象來(lái)操作表示層。MVC在我們項(xiàng)目中提供的這種對(duì)象和層之間的獨(dú)立,將使我們的維護(hù)變得更簡(jiǎn)單使我們的代碼重用變得很容易(下面你將看到)。作為一般的習(xí)慣,我們知道我們希望保持最低的對(duì)象間的依賴,這樣變化能夠很容易的得到滿足,而且我們可以重復(fù)使用我們辛辛苦苦寫的代碼。為了達(dá)到這個(gè)目的我們將遵循一般的原則“對(duì)接口編程,而不是對(duì)類”來(lái)使用MVC模式。我們的使命,如果我們選擇接受它..

2、.我們被委任構(gòu)建一個(gè)ACME2000SportsCar項(xiàng)目,我們的任務(wù)是做一個(gè)簡(jiǎn)單的Windows畫面來(lái)顯示汽車的方向和速度,使終端用戶能夠改變方向,加速或是減速。當(dāng)然將會(huì)有范圍的擴(kuò)展。在ACME已經(jīng)有了傳言,如果我們的項(xiàng)目成功,我們最終還要為ACME2PickupTruck和ACME1Tricycle開發(fā)一個(gè)相似的接口。作為開發(fā)人員,我們也知道ACME管理團(tuán)隊(duì)最終將問(wèn)“這樣是很棒的,我們能夠在我們的intranet上看到它?”所有的這些浮現(xiàn)在腦海中,我們想交付一個(gè)產(chǎn)品,使它能夠容易的升級(jí)以便能夠保證將來(lái)我們能夠有飯吃。所以,同時(shí)我們決定“這是使用MVC的一個(gè)絕好情形”我們的構(gòu)架概

3、要好,現(xiàn)在我們知道我們要使用MVC,我們需要指出它的本質(zhì)。通過(guò)我們的試驗(yàn)得出MVC的三個(gè)部分:Model,Control和View。在我們的系統(tǒng)中,Model就是我們的汽車,View就是我們的畫面,Control將這兩個(gè)部分聯(lián)系起來(lái)。為了改變Model(我們的ACME2000sportscar),我們需要使用Control。我們的Control將會(huì)產(chǎn)生給Model(我們的ACME2000sportscar)的請(qǐng)求,和更新View,View就是我們的畫面(UI)。這看起來(lái)很簡(jiǎn)單,但是這里產(chǎn)生了第一個(gè)要解決的問(wèn)題:當(dāng)終端用戶想做一個(gè)對(duì)ACME2000sportscar一個(gè)改變將會(huì)發(fā)生什

4、么,比如說(shuō)加速或是轉(zhuǎn)向?他們將通過(guò)View(ourwindowsform)用Control來(lái)提出一個(gè)變化的申請(qǐng)?,F(xiàn)在我們就剩下一個(gè)未解決問(wèn)題了。如果View沒(méi)有必要的信息來(lái)顯示Model的狀態(tài)怎么辦?我們需要再在我們的圖中加入一個(gè)箭頭:View將能申請(qǐng)Model的狀態(tài)以便得到它要顯示的相關(guān)狀態(tài)信息。最后,我們的最終用戶(司機(jī))將會(huì)和我們的ACMEVehicleControl系統(tǒng)通過(guò)View來(lái)交互。如果他們想發(fā)出一個(gè)改變系統(tǒng)的申請(qǐng),比如提高一點(diǎn)加速度,申請(qǐng)將會(huì)從View開始發(fā)出由Control處理。Control將會(huì)向Model申請(qǐng)改變并將必要的變化反映在View上。比如,如果一個(gè)蠻

5、橫的司機(jī)對(duì)ACME2000SportsCar做了一個(gè)"floorit"申請(qǐng),而現(xiàn)在行駛的太快不能轉(zhuǎn)向,那么Control將會(huì)拒絕這個(gè)申請(qǐng)并在View中通知,這樣就防止了在交通擁擠是發(fā)生悲慘的連環(huán)相撞。Model(theACME2000SportsCar)將通知View它的速度已經(jīng)提高,而View也將做適當(dāng)?shù)母?。綜上,這就是我們將構(gòu)建的概要:開始:作為總是想的遠(yuǎn)一點(diǎn)的開發(fā)人員,我們想讓我們的系統(tǒng)有一個(gè)長(zhǎng)久并且良好的生命周期。這就是說(shuō)能夠進(jìn)可能的準(zhǔn)備好滿足ACME的很多變化。為了做到這一點(diǎn),我們知道要遵循兩條原則...“保證你的類低耦合”,要達(dá)到這個(gè)目標(biāo),還要“對(duì)接口編程”。所以我們

6、要做三個(gè)接口(正如你所猜測(cè),一個(gè)Model接口,一個(gè)View接口,一個(gè)Control接口)。經(jīng)過(guò)很多調(diào)查研究,和與ACME人的費(fèi)力咨詢,我們得到了很多有關(guān)詳細(xì)設(shè)計(jì)的信息。我們想確定我們可以設(shè)置的最大速度在前進(jìn),后退和轉(zhuǎn)彎中。我們也需要能夠加速,減速,左轉(zhuǎn)和右轉(zhuǎn)。我們的儀表盤必須顯示當(dāng)前的速度和方向。實(shí)現(xiàn)所有這些需求是非??量痰?,但是我們確信我們能夠做到...首先,我們考慮一下基本的項(xiàng)目。我們需要一些東西來(lái)表示方向和轉(zhuǎn)動(dòng)請(qǐng)求。我們做了兩個(gè)枚舉類型:AbsoluteDirection和RelativeDirection。publicenumAbsoluteDirection{North

7、=0,East,South,West}publicenumRelativeDirection{Right,Left,Back}下面來(lái)解決Control接口。我們知道Control需要將請(qǐng)求傳遞給Model,這些請(qǐng)求包括:Accelerate,Decelerate,和Turn。我們建立一個(gè)IVehicleControl接口,并加入適當(dāng)?shù)姆椒?。publicinterfaceIVehicleControl{voidAccelerate(intparamAmount);voi

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。