欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用MVC模型引導(dǎo)你的WEB設(shè)計(jì)思路

 更新時(shí)間:2006年09月03日 00:00:00   作者:  

作者的blog:http://blog.csdn.net/oyiboy

習(xí)慣于過(guò)程式的開(kāi)發(fā),一直向往著面向?qū)ο蟆o(wú)奈半路出家人,沒(méi)有一點(diǎn)內(nèi)力基礎(chǔ),看了一大堆面向?qū)ο蟮臅?shū)也只是看得一頭霧水。對(duì)于MVC的概念也是偶然了解到的,感覺(jué)能和WEB開(kāi)發(fā)結(jié)合起來(lái)讓項(xiàng)目面向?qū)ο蠡?。以下是我一點(diǎn)點(diǎn)心得。
先介紹一下MVC的概念:
MVC(Model-View-Controller),即把一個(gè)應(yīng)用的輸入、輸出、處理流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層。
 模型(Model):就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。即是MVC的主要核心。
 視圖(View):代表用戶交互界面,也就是Web的HTML界面。
 控制(Controller):可以理解為從用戶接收請(qǐng)求, 將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。

以下以一個(gè)簡(jiǎn)單的留言板作為分析例子。

1)從上面的概念來(lái)看,留言板可以切成三部份。
 模型(M):包含 數(shù)據(jù)庫(kù)鏈接、生成數(shù)據(jù)集、數(shù)據(jù)庫(kù)更新操作。
 視圖(V):包含 獲取模型的數(shù)據(jù)集,將數(shù)據(jù)集內(nèi)填充到各種顯示界面內(nèi),如(留言板列表,管理控制頁(yè)面,添加修改刪除界面等一切用戶看得到的頁(yè)面。)
 控制(C):包含 數(shù)據(jù)庫(kù)更新的數(shù)據(jù)校驗(yàn),將更新完畢后的結(jié)果轉(zhuǎn)交給視圖進(jìn)行呈現(xiàn)。

2)三部份已經(jīng)出來(lái),下面是更進(jìn)一步的細(xì)化。
 模型(M)
  數(shù)據(jù)鏈接:數(shù)據(jù)鏈接參數(shù)、鏈接失敗處理。
  數(shù)據(jù)操作:生成固定格式的數(shù)據(jù)集、運(yùn)行單行SQL、解析固定格式的數(shù)據(jù)集更新數(shù)據(jù)庫(kù)(內(nèi)容包括有:留言記錄,管理員帳號(hào),系統(tǒng)設(shè)定)。
  文件操作:將文件內(nèi)部格式封成數(shù)據(jù)集,并附帶讀取寫(xiě)入文件操作。(內(nèi)容包括有:留言板樣式設(shè)定、版權(quán)設(shè)定、搜索引擎關(guān)鍵字設(shè)定、留言板標(biāo)題設(shè)定)
 視圖(V)
    數(shù)據(jù)顯示:根據(jù)要求授權(quán)給控制器[C]向模型[M]請(qǐng)求數(shù)據(jù)集,然后根據(jù)數(shù)據(jù)集顯示出界面。
    操作結(jié)果顯示:根據(jù)控制返回的數(shù)據(jù)資料決定顯示的提示資料
    具體資料包括有:
      留言添加頁(yè):判斷留言者是否管理員、判斷本次留言是回復(fù)還是新建留言。
      留言管理頁(yè):批量刪除留言、查詢留言、管理員帳號(hào)管理、系統(tǒng)設(shè)定等。
      留言顯示頁(yè):判斷留言是否為管理員專用、判斷本留言是否為管理員發(fā)布、是否允許回復(fù)、是否顯示留言者的敏感資料、留言是否需要審核后再顯示。

 控制(C)
  數(shù)據(jù)/文件操作:接收操作資料,校驗(yàn)數(shù)據(jù)是否符合條件,引用模型的生成數(shù)據(jù)集類生成指定數(shù)據(jù)集,然后交給相應(yīng)的模型操作方法操作,并獲取操作結(jié)果以預(yù)定好的格式轉(zhuǎn)交給視圖處理

3)系統(tǒng)基本上細(xì)化完畢,下一步就是將以上分析出來(lái)的東西封裝成Class
  模型(M):
    數(shù)據(jù)庫(kù)鏈接和數(shù)據(jù)操作可以封成一個(gè)Class。
    數(shù)據(jù)庫(kù)數(shù)據(jù)集的結(jié)構(gòu),可以引用Dictionary控件與數(shù)組完成。其間操作也可以封成一個(gè)Class具體可以仿造ASP.net中Dataset對(duì)象的部份機(jī)構(gòu)。
    文件操作部份封裝成一個(gè)Class
    文件結(jié)構(gòu)定義可以封成一個(gè)Class以方便控制直接引用,然后轉(zhuǎn)交給文件操作Class進(jìn)行相應(yīng)的操作。
  視圖(V):
    視圖部可均是以文件模式出現(xiàn),也可以將部份代碼封裝后引用。也可以引用現(xiàn)有的模板類實(shí)現(xiàn)代碼分離等。
  控制(C):
    數(shù)據(jù)校驗(yàn):SQL注入防御處理、日文字符替換處理、特定常用校驗(yàn)正則式,這個(gè)是控制器常用的函數(shù),可以封成Class也可以以函數(shù)型式存在獨(dú)立文件,使用時(shí)直接引用。
    數(shù)據(jù)/文件更新操作:由于直接操作,可以避免使用Class,而是以文件模式出現(xiàn),每個(gè)文件處理模型(M)中的某個(gè)類。并完成控制(C)的工作。
    視圖[V]模型[C]鏈接器:接收視圖[V]要求數(shù)據(jù)集的請(qǐng)求,將請(qǐng)求轉(zhuǎn)換成模型[M]合適的SQL句,然后交給模型[M]數(shù)據(jù)集成生器生成數(shù)據(jù)集,然后返回給視圖[V],這個(gè)處理比較麻煩,如果沒(méi)必要作得太嚴(yán)謹(jǐn)?shù)脑捒梢灾苯邮褂米侄蚊?,并在視圖[V]以SQL標(biāo)準(zhǔn)的條件句進(jìn)向模型[M]請(qǐng)求數(shù)據(jù)。

 疑:
  視圖[V]模型[C]鏈接器,對(duì)這個(gè)的設(shè)定我還是有點(diǎn)遲疑的。因?yàn)樵贛VC中,V對(duì)M的請(qǐng)求中是不需要C的摻和的,但是,這個(gè)鏈接器的操作確實(shí)很符合C的概念,所以這里我把它放在了控制器[C]里。或許他可以放至在視圖[V]內(nèi)。畢竟這個(gè)是視圖[V]的事。這個(gè)就看每個(gè)人對(duì)MVC的理解了。

以上基本完成了留言板的結(jié)構(gòu)分析與類的抽象,有不少的地方比較繁瑣,甚至是啰嗦,一個(gè)留言板其實(shí)是沒(méi)必要這樣,不過(guò),這個(gè)例子里作出來(lái)的不少Class可以直接使用在其它更大的項(xiàng)目中去,比如控制器[C]中的數(shù)據(jù)集請(qǐng)求轉(zhuǎn)換器,校驗(yàn)部份、模型[M]中的數(shù)據(jù)庫(kù)鏈接等,之所以遵循MVC模型進(jìn)行編程不但是為了讓程序設(shè)計(jì)更靈活,最重要一點(diǎn)是可以很快將項(xiàng)目拆開(kāi)成一小塊一小塊,然后又將這些小塊再折成更小的塊,一直折到單個(gè)類的某個(gè)方法某個(gè)屬性,等你完成這些小塊代碼后,那系統(tǒng)也就完成了。

相關(guān)文章

最新評(píng)論