您好,登錄后才能下訂單哦!
本文實例講述了Python設計模式之MVC模式。分享給大家供大家參考,具體如下:
一.簡單介紹
mvc模式 the model-view-controller pattern
mvc模式是一個運用在軟件工程中的設計模式。mvc模式脫離了以前簡單的web服務設計邏輯,將開發,測試和維護分離。在MVC模式中,應用被分解為相互作用的模塊,模型,視圖,控制。目的在于分離輸入(control),處理邏輯(model),輸出格式(view)。
簡單的理解:
1. 控制模塊用于獲取用戶輸入,并將模型與視圖建立聯系
2. 模型主要是從存儲區獲取數據
3. 視圖用于展示給用戶,從模型獲取的數據
具體細節:
控制模塊:可以被看作是一個介于用戶,處理(model),顯示(view)之間的中間人。它是用戶請求的入口,也是應用處理的入口。控制模塊接受用戶輸入,解析,決定哪一個model和view參與處理,因此,它決定了針對用戶請求,選擇何種view和model。
模型模塊:處理業務的應用程序,model操作數據庫,比如插入,更新,刪除。每個模型會提供固定類型的數據給控制模塊,另一方面,控制模塊可以調用模型的不同方法處理數據,并將處理后的結果返回給視圖模型
視圖模塊:主要用來顯示,通過控制模塊獲取模型模塊處理后的數據,并進行格式化的顯示。通過控制模塊選擇view并顯示反饋給用戶。view模型的選擇是基于模型模塊的l選擇和用戶配置等等。
二.簡單的例子
測試管理系統用來查詢錯誤列表
情景描述:
如果用戶查詢一個特定的錯誤,測試管理系統以某種格式顯示這個錯誤的描述
如果用戶搜索相關錯誤的關鍵值,測試管理系統顯示所有相關的錯誤列表
創建SQLite 數據庫,庫名TMS,并創建一個表
ID | Component | Summary |
1 | XYZ | File doesn't get deleted |
2 | XYZ | Registry doesn't get created |
3 | ABC | Wrong title gets displayed |
代碼如下:
#mvc.py import sqlite4 import types class DefectModel: def getDefectList(self, component): query = "select ID from defects where Component= '%s' " % component defectlist = self._dbselect(query) list = [] for row in defectlist: list.append(row[0]) return list def getSummary(self, id): query = "select summary from defects where ID='%d'" % id summary = self._dbselect(query) for row in summary: return row[0] def _dbselect(self, query): connection = sqlite3.connect('TMS') cursorObj = connection.cursor() results = cursorObj.execute(query) connection.commit() cursorObj.close() return results class DefectView: def summary(self, summary, defectid): print "#### Defect Summary for defect# %d####%s\n" %(defectid, summary) def defectList(self, list, category): print "#### Defect List for %s ####\n" % category for defect in list: print defect class Controller: def __init__(self): pass def getDefectSummary(self, defectid): model = DefectModel() view = DefectView() summary_data = model.getSummary(defectid) return view.summary(summary_data, defectid) def getDefectList(self, component): model = DefectModel() view = DefectView() defectlist_data = model.getDefectList(component) return view.defectList(defectlist_data, component)
使用模塊:
import mvc controller = mvc.Controller() print controller.getDefectSummary(2) print controller.getDefectList('ABC')
總結:通過此mvc設計方法,看到了解耦的好處,個個模塊獨立,相互不影響,也可以增加模塊。方便組合,方便拆卸。好好體會吧!
更多關于Python相關內容可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。