一.简单介绍

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,并创建一个表

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')

总结:通过此mvc设计方法,看到了解耦的好处,个个模块独立,相互不影响,也可以增加模块。方便组合,方便拆卸。好好体会吧!

最新文章

  1. Vue.js组件学习
  2. suse最小化安装
  3. node.js整理 01代码的组织和部署
  4. ATL字符串转换宏
  5. jsb里出现的 Invalid Native Object的一次bug修复的思考
  6. android141 360 安装软件管理
  7. android/IOS各平台分享链接/跳转链接配置说明(备用)
  8. Linux 套接字编程中的 5 个隐患
  9. Linux下安装SVN服务(CentOS7下)
  10. 厂商自定义USB设备固件程序及特性
  11. Map map=new HashMap(); 为什么是这样
  12. java String.Format详解
  13. VMware Workstation 14永久激活密钥
  14. java 接口实现防盗门功能
  15. MysqL_select for update锁详解
  16. RocketMQ实战快速入门
  17. ndarray的用法总结
  18. B. Heaters Div3
  19. 第二周java学习收获
  20. LeetCode: Min Stack 解题报告

热门文章

  1. java中如何判断一个字符串是否包含另外一个字符串的方法
  2. vijos1083:小白逛公园
  3. linux学习(二) -- ubuntu下lnmp环境的配置
  4. MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat
  5. [转载]robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例
  6. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛
  7. 个人环境搭建——版本控制SVN
  8. transform总结
  9. 沼泽鳄鱼(bzoj 1898)
  10. hdu 3518 Boring counting 后缀数组 height分组