最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例

 更新時(shí)間:2018年01月10日 10:38:51   作者:李自泰  
這篇文章主要介紹了Python設(shè)計(jì)模式之MVC模式,簡(jiǎn)單介紹了MVC模式的概念、原理,并結(jié)合實(shí)例形式給出了Python實(shí)現(xiàn)與使用MVC模式的相關(guā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ì)邏輯,將開(kāi)發(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)用處理的入口。控制模塊接受用戶輸入,解析,決定哪一個(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)顯示,通過(guò)控制模塊獲取模型模塊處理后的數(shù)據(jù),并進(jìn)行格式化的顯示。通過(guò)控制模塊選擇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é):通過(guò)此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入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 數(shù)據(jù)可視化Pyecharts的實(shí)際使用方式

    數(shù)據(jù)可視化Pyecharts的實(shí)際使用方式

    這篇文章主要介紹了數(shù)據(jù)可視化Pyecharts的實(shí)際使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • python多進(jìn)程讀圖提取特征存npy

    python多進(jìn)程讀圖提取特征存npy

    這篇文章主要為大家詳細(xì)介紹了python多進(jìn)程讀圖提取特征存npy,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 淺談Python從全局與局部變量到裝飾器的相關(guān)知識(shí)

    淺談Python從全局與局部變量到裝飾器的相關(guān)知識(shí)

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python從全局與局部變量到裝飾器的相關(guān)知識(shí)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python使用Apriori算法進(jìn)行關(guān)聯(lián)性解析

    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ù)合并方法

    今天小編就為大家分享一篇pandas進(jìn)行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python實(shí)現(xiàn)讀Excel寫(xiě)入.txt的方法

    python實(shí)現(xiàn)讀Excel寫(xiě)入.txt的方法

    下面小編就為大家分享一篇python實(shí)現(xiàn)讀Excel寫(xiě)入.txt的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python調(diào)用百度AI實(shí)現(xiàn)顏值評(píng)分功能

    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ì)列詳解

    Python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列詳解

    棧和隊(duì)列是在程序設(shè)計(jì)中常見(jiàn)的數(shù)據(jù)類型。本節(jié)將詳細(xì)介紹隊(duì)列的定義及其不同實(shí)現(xiàn),并且給出隊(duì)列的一些實(shí)際應(yīng)用,感興趣的小伙伴可以了解一下
    2022-03-03
  • Python Tkinter Menu控件使用詳解

    Python Tkinter Menu控件使用詳解

    Menu控件(菜單控件)可以說(shuō)是 GUI 中“精髓所在”,它以可視化的方式將一系列的命令進(jìn)行分組,在每一個(gè)分組下又可以“隱藏”許多的程序執(zhí)行命令(即功能)。本文將詳細(xì)介紹它的使用,需要的可以參考一下
    2022-01-01
  • Python 如何批量更新已安裝的庫(kù)

    Python 如何批量更新已安裝的庫(kù)

    這篇文章主要介紹了Python 如何批量更新已安裝的庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

湖北省| 景谷| 陇川县| 昭觉县| 福海县| 清新县| 平江县| 灌云县| 孝感市| 弋阳县| 子洲县| 全州县| 库伦旗| 井冈山市| 永川市| 华坪县| 宜川县| 宕昌县| 安多县| 金华市| 田东县| 隆回县| 灵丘县| 溧阳市| 偏关县| 金门县| 娱乐| 伊金霍洛旗| 临安市| 兴隆县| 丹棱县| 诸暨市| 神木县| 灌南县| 宜兰市| 斗六市| 靖边县| 台湾省| 遂昌县| 盐城市| 扶绥县|