Python設計模式之MVC模式簡單示例

2022-09-28 19:36:20 字數 2797 閱讀 2356

一.簡單介紹

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,並建立乙個表

idcomponent

summary

1xyz

file doesn't get deleted

2xyz

registry doesn't get created

3abc

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 = mo程式設計客棧del.getdefectlist(component)

return view.defectlist(dewww.cppcns.comfectlist_data, component)

使用模組:

import mvc

controller = mvc.controller()

print controller.getdefectsummary(2)

print controller.getdefectlist('abc')

www.cppcns.com

總結:通過此mvc設計方法,看到了解耦的好處,個個模組獨立,相互不影響,也可以增加模組。方便組合,方便拆卸。好好體會吧!

python的設計模式之MVC模式

關注點分離 separation of concerns,soc 原則是軟體工程相關的設計原則之一。soc原則背後的思想是將乙個應用切分成不同的部分,每個部分解決乙個單獨的關注點。分層設計中的層次 資料訪問層 業務邏輯層和表示層等 即是關注點的例子。使用soc原則能簡化軟體應用的開發和維護。模型 檢...

php的mvc設計模式,什麼是MVC設計模式?,

詳細內容 model view controller簡稱mvc,即模型檢視控制器。mvc設計模式指定應用程式由資料模型 呈現資訊和控制資訊組成。該模式要求將每個模式分成不同的物件。mvc更像是一種架構模式,但並不適用於完整的應用程式。mvc主要與應用程式的ui 互動層有關。你仍然需要業務邏輯層,可能...

設計模式之美學習 傳統MVC和DDD充血模型 二

現在傳統的mvc開發基本上都是貧血模型 如以下 我們工作中經常使用 controller vo view object public class usercontroller public class uservo service bo business object public class us...