Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例
本文實(shí)例講述了Python設(shè)計(jì)模式之MVC模式。分享給大家供大家參考,具體如下:
一.簡(jiǎn)單介紹
mvc模式 the model-view-controller pattern
mvc模式是一個(gè)運(yùn)用在軟件工程中的設(shè)計(jì)模式。mvc模式脫離了以前簡(jiǎn)單的web服務(wù)設(shè)計(jì)邏輯,將開發(fā),測(cè)試和維護(hù)分離。在MVC模式中,應(yīng)用被分解為相互作用的模塊,模型,視圖,控制。目的在于分離輸入(control),處理邏輯(model),輸出格式(view)。
簡(jiǎn)單的理解:
1. 控制模塊用于獲取用戶輸入,并將模型與視圖建立聯(lián)系
2. 模型主要是從存儲(chǔ)區(qū)獲取數(shù)據(jù)
3. 視圖用于展示給用戶,從模型獲取的數(shù)據(jù)
具體細(xì)節(jié):
控制模塊:可以被看作是一個(gè)介于用戶,處理(model),顯示(view)之間的中間人。它是用戶請(qǐng)求的入口,也是應(yīng)用處理的入口??刂颇K接受用戶輸入,解析,決定哪一個(gè)model和view參與處理,因此,它決定了針對(duì)用戶請(qǐng)求,選擇何種view和model。
模型模塊:處理業(yè)務(wù)的應(yīng)用程序,model操作數(shù)據(jù)庫(kù),比如插入,更新,刪除。每個(gè)模型會(huì)提供固定類型的數(shù)據(jù)給控制模塊,另一方面,控制模塊可以調(diào)用模型的不同方法處理數(shù)據(jù),并將處理后的結(jié)果返回給視圖模型
視圖模塊:主要用來(lái)顯示,通過控制模塊獲取模型模塊處理后的數(shù)據(jù),并進(jìn)行格式化的顯示。通過控制模塊選擇view并顯示反饋給用戶。view模型的選擇是基于模型模塊的l選擇和用戶配置等等。
二.簡(jiǎn)單的例子
測(cè)試管理系統(tǒng)用來(lái)查詢錯(cuò)誤列表
情景描述:
如果用戶查詢一個(gè)特定的錯(cuò)誤,測(cè)試管理系統(tǒng)以某種格式顯示這個(gè)錯(cuò)誤的描述
如果用戶搜索相關(guān)錯(cuò)誤的關(guān)鍵值,測(cè)試管理系統(tǒng)顯示所有相關(guān)的錯(cuò)誤列表
創(chuàng)建SQLite 數(shù)據(jù)庫(kù),庫(kù)名TMS,并創(chuàng)建一個(gè)表
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')
總結(jié):通過此mvc設(shè)計(jì)方法,看到了解耦的好處,個(gè)個(gè)模塊獨(dú)立,相互不影響,也可以增加模塊。方便組合,方便拆卸。好好體會(huì)吧!
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- 使用簡(jiǎn)單工廠模式來(lái)進(jìn)行Python的設(shè)計(jì)模式編程
- python3設(shè)計(jì)模式之簡(jiǎn)單工廠模式
- python版簡(jiǎn)單工廠模式
- Python設(shè)計(jì)模式之單例模式實(shí)例
- python設(shè)計(jì)模式大全
- Python設(shè)計(jì)模式之觀察者模式實(shí)例
- Python設(shè)計(jì)模式之代理模式實(shí)例
- Python設(shè)計(jì)模式編程中Adapter適配器模式的使用實(shí)例
- Python的設(shè)計(jì)模式編程入門指南
- Python設(shè)計(jì)模式之抽象工廠模式
- Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式實(shí)例詳解
相關(guān)文章
Python腳本實(shí)現(xiàn)抓取指定網(wǎng)站上的所有圖片
對(duì)于開發(fā)者、數(shù)據(jù)分析師以及研究人員而言,從網(wǎng)頁(yè)中提取有價(jià)值的信息是一項(xiàng)至關(guān)重要的技能,本文將詳細(xì)介紹如何使用Python編寫一個(gè)腳本來(lái)自動(dòng)抓取指定網(wǎng)站上的所有圖片,需要的可以參考下2024-10-10使用python創(chuàng)建極坐標(biāo)平面的示例代碼
PolarPlane 是 Manim(一個(gè)用于數(shù)學(xué)動(dòng)畫的Python庫(kù))中的一個(gè)類,用于創(chuàng)建極坐標(biāo)平面,與笛卡爾坐標(biāo)系不同,極坐標(biāo)系是基于角度和半徑來(lái)定位點(diǎn)的,本文就給大家介紹如何用python創(chuàng)建極坐標(biāo)平面,需要的朋友可以參考下2024-08-08Python 語(yǔ)言實(shí)現(xiàn)六大查找算法
本文給大家分享Python 語(yǔ)言實(shí)現(xiàn)六大查找算法,針對(duì)每種算法通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-06-06python實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Python?PyWebIO開發(fā)Web應(yīng)用實(shí)例探究
這篇文章主要為大家介紹了Python?PyWebIO開發(fā)Web應(yīng)用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程
這篇文章主要介紹了在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程,Neo4j是一個(gè)具有一定人氣的非關(guān)系型的數(shù)據(jù)庫(kù),需要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)刪除Android工程中的冗余字符串
這篇文章主要介紹了Python實(shí)現(xiàn)刪除Android工程中的冗余字符串,本文實(shí)現(xiàn)的是刪除Android資源(語(yǔ)言)國(guó)際化機(jī)制中的一些冗余字符串,需要的朋友可以參考下2015-01-01深入探索Django中間件的應(yīng)用場(chǎng)景
Django中間件是一種可插拔的應(yīng)用程序組件,可在請(qǐng)求和響應(yīng)處理過程中修改Django的行為。中間件可用于處理請(qǐng)求、響應(yīng)、異常等,還可用于實(shí)現(xiàn)身份驗(yàn)證、緩存、性能監(jiān)控等常用功能。通過深入探索中間件的應(yīng)用場(chǎng)景,可以提高Django應(yīng)用程序的可擴(kuò)展性和靈活性2023-05-05