
摘要:本文以音樂監測系統為實例介紹將MVC設計模式應用到實際的開發中,通過對MVC模式的理解和運用,能很好地將軟件模塊化,分離系統的數據控制和數據表示功能,有利于開發團隊間的分工與合作,尤其在開發大型復雜的項目時,這種模式有利于加快項目進度,縮短開發周期,增強軟件的可維護性和代碼重用性,提高開發效率和項目質量。
關鍵詞:MVC設計模式;模型;視圖;控制器;yii網絡框架;音樂監測系統
1 背景
隨著教育事業的迅猛發展,有關素質教育的改革也越來越受到重視,而目前國內還缺乏系統完整的測評體系。根據國內的這種狀況,我們設計了一套相對完整的測評體系。該測評體系是基于MVC設計模式的。
2 MVC模式
MVC是一種設計模式,它強制性地把應用程序的輸入、處理、輸出分開。MVC把應用程序分為三個核心模塊:模型(model),視圖(view),控制器(controller),它們分別擔任不同的任務。
2.1 模型(Model)
模型是與問題相關數據的邏輯抽象,代表對象的內在屬性,是整個模型的核心。它采用面向對象的方法,將問題領域中的對象抽象為應用程序對象,在這些抽象的對象中封裝了對象的屬性和這些對象所隱含的邏輯。
2.2 視圖(View)
視圖是模型的外在表現,是窗體控件的集合,通過store來加載數據并展現在界面上,界面控件的響應都寫在controller里。view對controller的存在完全無知,也沒有代碼上的依賴。一個模型可以對應一個或者多個視圖,視圖具有與外界交互的功能,是應用系統與外界的接口:一方面它為外界提供輸入手段,并觸發應用邏輯運行;另一方面,它又將邏輯運行的結果以某種形式顯示給外界。
2.3 控制器(Controller)
控制器是模型與視圖的聯系紐帶,控制器提取通過視圖傳輸進來的外部信息,并將用戶與視圖的交互轉換為基于應用程序行為的標準業務事件,再將標準業務事件解析為視圖應執行的動作,同時,模型的更新與修改也將通過控制器來通知視圖,從而保持各個視圖與模型的一致性。
2.4 采用MVC模式的優點
將界面和模型有效分離,降低了模塊之間的耦合度。在變更的情況下,模型和用戶界面相互獨立,不會影響整個系統。(1)同一個模型可對應多個視圖,靈活性強。(2)模型獨立于接口代碼,因此具有良好的可移植性。
3 系統的設計
音樂監測系統的主要功能可以劃分為:
(1)用戶登錄管理。根據功能權限不同將用戶劃分為:系統管理員(admin)、系統使用者(user)、系統查看者(demo)。
(2)使用者使用系統進行測試。系統隨機從題庫中的四個維度分別選出五道題組成綜合測試題,使用者測試后系統根據使用者的答題情況給出相應的反饋。
(3)管理員實現題庫管理。包括題目、選項、答案、所屬模塊、相關圖片或音樂,并提供增加、刪除、修改、查詢這些基本功能。
由于篇幅的原因,圖1只給出音樂監測系統的部分實現模塊。
4 系統的實現
這個音樂監測系統的MVC模式是用網絡框架yii實現的。開發環境是wamp。
4.1 yii框架
(1)和多數PHP框架類似,yii是一個MVC框架。Yii具有高度的可重用性和可擴展性,yii框架是純面向對象的,Yii中的一切都是獨立的可被配置,可重用,可擴展的組件。要運行一個Yii驅動的Web應用,需要有一個支持PHP5.1.0或以上版本的Web服務器。yii從一開始就仔細設計以適合嚴禁的Web應用開發。它既不是一個其他項目的衍生品,也不是一個第三方工作的組合。它是作者豐富的Web應用開發經驗和對大多數流行的Web編程框架與應用的研究與思考的成果。
從yii應用的這個流程可以發現這和我們系統所需要的設計很相似,因此系統采用了yii這個網絡框架。由于篇幅有限,MVC模式的詳細設計主要對視圖層進行說明。
(2)yii框架的視圖層實現。yii框架的視圖是一個包含了主要的用戶交互元素的php腳本。每個視圖有一個名字,當渲染(render)時,名字會被用于識別視圖腳本文件。視圖的名稱與其視圖腳本名稱是一樣的。
在視圖腳本的內部,我們可以通過﹩this來訪問控制器實例。同時,我們也可以在視圖里以﹩this->屬性名的方式來獲取控制器的任何屬性,這種調用方式是通過_get魔法方法實現的。一次較為完整的視圖渲染過程在CController類的render函數中體現。當控制器中從模型(model)中拿到數據后,一般會執行render()方法創建視圖。
對于不同的頁面中共用的內容,雖然可以通過renderPartial方法渲染部分頁面視圖,但是必然存在對于數據部分的重復,因為這些視圖都需要調用控制器提供的數據,從而產生耦合。因此yii框架提供了另一個獨立的視圖部件,稱之為Widget。Widget增加了頁面的復用度,減少了代碼量。
4.2 wamp開發環境
WAMP就是Windows+Apache+MySql+php,也就是在Windows操作系統上用php語言結合ApacheWeb服務器、MySQL數據庫開發網站。
4.3 數據庫的設計
依據系統所要實現的功能:涉及到的數據庫有problem:
類型和字段以及描述如下:
integer ﹩PID(主鍵,題目的編號)
string ﹩title(題目)
string ﹩choice1(A選項)
string ﹩choice2(B選項)
string ﹩choice3(C選項)
string ﹩choice4(D選項)
string ﹩choicepng(圖片,有圖片時則插入圖片)
string ﹩anwser(答案)
string ﹩remark(解析)
string ﹩category(題目所屬維度)
string ﹩sequence(題目的編號)
string ﹩audio(關聯的音頻)
problem表是數據庫中最主要的內容,這些字段剛好可以把problem的所有屬性包含在內而又不累贅。
5 總結
隨著網絡技術的迅速發展個J2EE平臺的廣泛使用,多層web應用的開發已經成為主流。但是在多層的web體系結構設計中,普遍存在著程序可重用度低、程序應變能力較弱等不足。開發過程中,為了解決這些問題,引入了能松散耦合應用的MVC設計模式,提高了開發質量、縮短項目開發周期、降低項目開發成本,并且使得系統流程清晰,易于擴展和維護。
本文從MVC設計模式的理論著手,對它的體系結構和實現技術進行了簡單額介紹,并結合音樂監測系統的實際應用需求,采用了MVC設計模式并實現了音樂監測系統。
參考文獻:
[1] 姚慧廣,趙岳松.Web編程中MVC模型的應用[J].微機發展,2002,11(3):9-10.
[2] wikipedia.MVC https:∥zh.wikipedia.org/wiki/MVC.
[3] 王付娟.MVC設計模型[J].硅谷,2009(7):29.
[4] yii框架的視圖層實現.http:∥www.phppan.com/2013/02/yiiframework-view/.
[5] 百度百科yii.http:∥baike.baidu.com.cn/view/351219.htm.
[6] 戴一平.計算機與現代化2011年第三期MVC設計模式在PHP開發中的應用.
[7] 阮彤,李京,馮東霄.基于Java的應用服務器的設計與實現計算機研究與發展.
[8] 衛索琪.北京工業大學工學碩士學位論文[D].基于MVC模式的一種web應用框架.
[9] 畢建信.武漢大學申請工學碩士學位論文[D].基于MVC設計模式的web應用研究與實現.