• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      工作任務(wù)管理系統(tǒng)中的軟件模式應(yīng)用

      2009-09-05 04:10熊松泉
      關(guān)鍵詞:設(shè)計模式

      熊松泉 吳 瓊

      摘要:設(shè)計模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。文中對MVC模式、單例模式和頁面控制器的概念進行了探討,并在工作任務(wù)管理系統(tǒng)進行了實現(xiàn)。

      關(guān)鍵詞:設(shè)計模式 MVC 單例模式 頁面控制器

      0 引言

      軟件項目開發(fā)的一個難點是用戶需求的變化導(dǎo)致后期功能代碼的擴展和維護,軟件項目管理的一個難點是團隊成員間的協(xié)作和溝通。設(shè)計模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編寫的、代碼設(shè)計經(jīng)驗的總結(jié)。遵循設(shè)計模式的解決方案,有助于功能的擴展和代碼的維護。設(shè)計模式是面向?qū)ο蟪绦蛟O(shè)計的精華,讓對象和對象的關(guān)系清晰了起來,使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設(shè)計模式是按場景進行分類,便于團隊間的溝通。本文以工作任務(wù)管理系統(tǒng)為例,討論幾種常用軟件模式在信息管理系統(tǒng)開發(fā)中的應(yīng)用。

      1 設(shè)計模式分析

      1.1 MVC模式 MVC是個將一個應(yīng)用的實現(xiàn)分成三個組件角色的框架技術(shù):模型,視圖和控制器。①在基于MVC的應(yīng)用里,Model(模型)是負責(zé)保持狀態(tài)的應(yīng)用組件。這個狀態(tài)通常都持久于數(shù)據(jù)庫之中(譬如,我們也許會有一個Product(產(chǎn)品)類用來代表SQL中的Products數(shù)據(jù)表中的訂單數(shù)據(jù))。②在基于MVC的應(yīng)用里,View(視圖)是負責(zé)顯示用戶界面的組件。這個UI通常是使用模型數(shù)據(jù)來創(chuàng)建的(譬如,我們也許會生成一個Product“編輯”視圖,根據(jù)當前Product對象的狀態(tài),顯示文本框,下拉框和復(fù)選框等)。③在基于MVC的應(yīng)用里,Controller(控制器)是處理用戶交互,操作模型和最終選擇用哪個視圖來顯示UI的組件。在MVC應(yīng)用中,視圖只是用來顯示信息而已,是控制器來處理和回應(yīng)用戶的輸入和交互的。使用MVC方法的一個好處是,它有助于促進應(yīng)用中模型,視圖,控制器間的關(guān)注的清晰分離。保持關(guān)注的清晰分離使得對應(yīng)用的測試極其容易,因為不同應(yīng)用組件間的契約的定義和表達是更明確的。

      1.2 頁面控制器 使用頁面控制器模式接受來自頁面請求的輸入、調(diào)用請求對模型執(zhí)行的操作以及確定應(yīng)用于結(jié)果頁面的正確視圖。分隔調(diào)度邏輯和所有視圖相關(guān)代碼。如果合適,創(chuàng)建用于所有頁面控制器的公用基類,以避免代碼重復(fù)并提高一致性和可測試性。頁面控制器可接收頁面請求、提取所有相關(guān)數(shù)據(jù)、調(diào)用對模型的所有更新以及向視圖轉(zhuǎn)發(fā)請求。而視圖又將根據(jù)該模型檢索要顯示的數(shù)據(jù)。定義獨立頁面控制器將分隔模型與Web請求細節(jié)(例如會話管理,或使用查詢字符串或隱藏表單域向頁面?zhèn)鬟f參數(shù))。

      1.3 單例模式 單例模式的特點:①單例類只能有一個實例;②單例類必須自己創(chuàng)建自己的唯一實例;③單例類必須給所有其它對象提供這一實例。

      Singleton模式包含的角色只有一個,就是Singleton。Singleton擁有一個私有構(gòu)造函數(shù),確保用戶無法通過new直接實例它。除此之外,該模式中包含一個靜態(tài)私有成員變量instance與靜態(tài)公有方法Instance()。Instance方法負責(zé)檢驗并實例化自己,然后存儲在靜態(tài)成員變量中,以確保只有一個實例被創(chuàng)建。

      2 工作任務(wù)管理系統(tǒng)的設(shè)計模式應(yīng)用

      2.1 工作任務(wù)管理系統(tǒng)體系結(jié)構(gòu) 工作任務(wù)管理系統(tǒng)的體系結(jié)構(gòu)如圖1所示,圖中的箭頭表明了信賴關(guān)系。在物理上,DAL是公共的數(shù)據(jù)訪問入口層,BLL用來封閉業(yè)務(wù)實體對象,BIN是經(jīng)過編譯后的邏輯控制代碼,Web文件夾下是按功能劃分的視圖文件。用戶與《View》下的視圖文件進行交互,控制數(shù)據(jù)的顯示和接受用戶的輸入;《View》中的數(shù)據(jù)來源于《Controller》,《Controller》負責(zé)維護《View》的狀態(tài)和數(shù)據(jù)的呈現(xiàn),以及將《View》傳遞過來的數(shù)據(jù)對象化,并調(diào)用對象方法實現(xiàn)相應(yīng)的業(yè)務(wù)邏輯獲得數(shù)據(jù);《Model》中包含實體的集合,對應(yīng)于業(yè)務(wù)規(guī)則,是數(shù)據(jù)庫表數(shù)據(jù)和數(shù)據(jù)增、刪、改、查操作的抽象,實體以類的形式存在,業(yè)務(wù)以類方法的形式進行實現(xiàn),《Model》從業(yè)務(wù)規(guī)則的層面處理數(shù)據(jù),它是《Controller》數(shù)據(jù)的供應(yīng)商。

      工作任務(wù)管理系統(tǒng)中使用了MVC結(jié)構(gòu)后,在開發(fā)時,項目組成員間職責(zé)明確,美工和網(wǎng)頁設(shè)計師只需要關(guān)注《View》的設(shè)計和HTML實現(xiàn);數(shù)據(jù)庫設(shè)計人員只需要關(guān)心數(shù)據(jù)庫的設(shè)計以及數(shù)據(jù)的轉(zhuǎn)換規(guī)則;模型人員只需要從業(yè)務(wù)的角度關(guān)注業(yè)務(wù)規(guī)則的實現(xiàn)和從數(shù)據(jù)庫到實現(xiàn)對象的轉(zhuǎn)換工作;而程序只需要關(guān)注利用模型的業(yè)務(wù)規(guī)則控制處理《View》的數(shù)據(jù)顯示和輸入就可以了。這樣做,非常有利于項目的管理和分工協(xié)作。

      另外,到了開發(fā)的后期,需求分析的變化,導(dǎo)致業(yè)務(wù)規(guī)則的重整,只需要在現(xiàn)在代碼基礎(chǔ)上增加一些實體類就可以了,便于系統(tǒng)的擴展。

      2.2 頁面控制器 在工作任務(wù)管理系統(tǒng)中,《View》分為兩種,一種是無需授權(quán)任何人都可以訪問的頁面,稱之為通用頁;一種是需要用戶登錄,特定用戶才有權(quán)訪問的頁面,稱之授權(quán)頁?!禫iew》只是簡單的以HTML的方式顯示,由瀏覽器解析,否能訪問由頁面控制器來控制的,即《View》對應(yīng)的后臺代碼。在默認情況下,所有的布面控制器都繼承于System.Web.UI.Page類,要實現(xiàn)權(quán)限控制必須在所有的頁面控制添加控制代碼,這用做非常的麻煩,而且不利于代碼的后期修改和擴展。針對于這種需求,頁面控制器設(shè)計模式提供了一種非常好的解決方案,如圖2所示。

      定義一個基類BasePage,繼承于System.Web.UI.Page,是系統(tǒng)中所有頁面控制器的基礎(chǔ);從BasePage下派生出GenPage和AuthPage兩個類,分別用作于通用頁和授權(quán)頁的父類。在授權(quán)頁的構(gòu)造函數(shù)中,實現(xiàn)OnLoad事件的訂閱,在OnLoad的事件處理程序中添加權(quán)限控制代碼,所有的授權(quán)頁都從AuthPage派生出來,這樣在派生頁控制器中,就無需寫權(quán)限控制代碼了。在后期代碼的擴展過程中,只需有修改父類的代碼就可以,而不是每個頁控制器的代碼。

      2.3 單例的數(shù)據(jù)連接對象 數(shù)據(jù)連接是系統(tǒng)中非常寶貴的資源,如果一個數(shù)據(jù)庫系統(tǒng)中存在著多個連接對象,并且這些對象沒有及時釋放,系統(tǒng)的性能將會急劇下降。一個好的設(shè)計是,在一個系統(tǒng)中數(shù)據(jù)連接應(yīng)該是唯一的,單例的,如圖3所示。Cnn是DBAccess的一個靜態(tài)成員,并在靜態(tài)構(gòu)造函數(shù)實例化。這樣,不論DBAccess有多少個對象,數(shù)據(jù)連接對象便只有一個了。

      3 結(jié)論

      設(shè)計模式是設(shè)計經(jīng)驗的總結(jié),在系統(tǒng)設(shè)計過程中合理地使用一些經(jīng)典的設(shè)計模式,是十分有利于系統(tǒng)功能的擴展和代碼復(fù)用的。在工作任務(wù)管理系統(tǒng)中,MVC模式使得系統(tǒng)的結(jié)構(gòu)清晰,有利團隊的分工合作;頁面控制器模式降低了代碼的冗余度,提高了代碼的重用性,方便了功能的擴展;單例模式實現(xiàn)了數(shù)據(jù)連接的唯一性,提高了系統(tǒng)的性能。

      參考文獻:

      [1]鐘金琴,辜麗川.一種面向?qū)ο蟮能浖O(shè)計模式庫的設(shè)計.計算機技術(shù)與發(fā)展[J],2008.(9):22.

      [2]Microsoft,表示層設(shè)計模式:Page Controller(頁面控制器)[OL]. http://www.uml.org.cn/sjms/200812302.asp,2008-12-30.

      猜你喜歡
      設(shè)計模式
      “1+1”作業(yè)設(shè)計模式的實踐探索
      設(shè)計模式挖掘的有效性評估策略
      三維協(xié)同設(shè)計模式下的航天項目管理實踐與展望
      交通機電工程設(shè)計模式創(chuàng)新探討
      基于“雙師制”指導(dǎo)下的工業(yè)設(shè)計專業(yè)畢業(yè)設(shè)計模式
      互動式設(shè)計模式研究
      贵阳市| 绥芬河市| 北碚区| 石阡县| 台安县| 伊宁市| 沾益县| 屏边| 信丰县| 游戏| 福安市| 桑日县| 德阳市| 常山县| 家居| 嘉义市| 博爱县| 达拉特旗| 丰原市| 集贤县| 宜州市| 呼图壁县| 普洱| 广南县| 桐柏县| 中山市| 连平县| 中宁县| 曲阜市| 应城市| 桐城市| 南陵县| 龙泉市| 西乌| 梁平县| 抚远县| 虞城县| 苏尼特右旗| 疏勒县| 武汉市| 南宫市|