一.簡單介紹
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...