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ù)庫,比如插入,更新,刪除。每個(gè)模型會(huì)提供固定類型的數(shù)據(jù)給控制模塊,另一方面,控制模塊可以調(diào)用模型的不同方法處理數(shù)據(jù),并將處理后的結(jié)果返回給視圖模型
視圖模塊:主要用來顯示,通過控制模塊獲取模型模塊處理后的數(shù)據(jù),并進(jìn)行格式化的顯示。通過控制模塊選擇view并顯示反饋給用戶。view模型的選擇是基于模型模塊的l選擇和用戶配置等等。
二.簡(jiǎn)單的例子
測(cè)試管理系統(tǒng)用來查詢錯(cuò)誤列表
情景描述:
如果用戶查詢一個(gè)特定的錯(cuò)誤,測(cè)試管理系統(tǒng)以某種格式顯示這個(gè)錯(cuò)誤的描述
如果用戶搜索相關(guān)錯(cuò)誤的關(guān)鍵值,測(cè)試管理系統(tǒng)顯示所有相關(guān)的錯(cuò)誤列表
創(chuàng)建SQLite 數(shù)據(jù)庫,庫名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)單工廠模式來進(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)文章
數(shù)據(jù)可視化Pyecharts的實(shí)際使用方式
這篇文章主要介紹了數(shù)據(jù)可視化Pyecharts的實(shí)際使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
淺談Python從全局與局部變量到裝飾器的相關(guān)知識(shí)
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python從全局與局部變量到裝飾器的相關(guān)知識(shí)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
python使用Apriori算法進(jìn)行關(guān)聯(lián)性解析
這篇文章主要為大家分享了python使用Apriori算法進(jìn)行關(guān)聯(lián)性的解析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
pandas進(jìn)行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法
今天小編就為大家分享一篇pandas進(jìn)行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python實(shí)現(xiàn)讀Excel寫入.txt的方法
下面小編就為大家分享一篇python實(shí)現(xiàn)讀Excel寫入.txt的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python調(diào)用百度AI實(shí)現(xiàn)顏值評(píng)分功能
這篇文章主要介紹了應(yīng)用百度AI的人臉識(shí)別功能對(duì)年齡、性別、顏值等進(jìn)行識(shí)別,代碼具有一定的學(xué)習(xí)價(jià)值,感興趣的朋友跟隨小編一起看看吧2021-11-11
Python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列詳解
棧和隊(duì)列是在程序設(shè)計(jì)中常見的數(shù)據(jù)類型。本節(jié)將詳細(xì)介紹隊(duì)列的定義及其不同實(shí)現(xiàn),并且給出隊(duì)列的一些實(shí)際應(yīng)用,感興趣的小伙伴可以了解一下2022-03-03

