浅谈MVC&MTV设计模式

举报
宇宙之一粟 发表于 2022/09/30 21:09:19 2022/09/30
【摘要】 在目前基于 Python 语言的几十个 Web 开发框架中,几乎所有的全栈框架都强制或引导开发者使用 MVC 设计模式。所谓全栈框架,是指除了封装网络和线程操作,还提供 HTTP、数据库读写管理、HTML 模板引擎等一系列功能的 Web 框架,比如 Django、Tornado 和 Flask。MVC设计模式:最早由Trygve Teenskaug在 1978 年提出,上世纪 80 年代是程...

在目前基于 Python 语言的几十个 Web 开发框架中,几乎所有的全栈框架都强制或引导开发者使用 MVC 设计模式。

所谓全栈框架,是指除了封装网络和线程操作,还提供 HTTP、数据库读写管理、HTML 模板引擎等一系列功能的 Web 框架,比如 Django、Tornado 和 Flask。

MVC设计模式:

最早由Trygve Teenskaug在 1978 年提出,上世纪 80 年代是程序语言 Smalltalk 的一种内部架构。后来 MVC 被其他领域借鉴,成为了软件工程中的一种软件架构模式。

MVC 把 Web 框架分为 3 个基础部分:

  • 模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是 Web 应用程序中用于处理应用程序的数据逻辑的部分,Model 只提供功能性的接口,通过这些接口可以获取 Model 的所有功能。白话说,这个模块就是 Web 框架和数据库的交互层。
  • 视图(View):负责数据的显示和呈现,是对用户的直接输出。
  • 控制器(Controller):负责从用户端收集用户的输入,可以看成提供 View 的反向功能。

这三个部分互相独立,但又相互联系,使得改进和升级界面及用户交互流程,在Web开发过程任务分配时,不需要重写业务逻辑及数据访问代码。

MVC 在 Python 之外的语言中也有广泛应用,例如 VC++ 的 MFC,Java 的 Structs 及 Spring、C# 的 .NET 开发框架,都非常有名。

MTV 设计模式:

Django 对传统的 MVC 设计模式进行了修改,将视图分成 View 模块和 Template 模块两部分,将动态的逻辑处理与静态的页面展现分离开。而 Model 采用了 ORM 技术,将关系型数据库表抽象成面向对象的 Python 类,将表操作转换成类操作,避免了复杂的 SQL 语句编写。

MTV 和 MVC 本质上是一样的。

  • 模型(Model):和 MVC 中的定义一样
  • 模板(Template):将数据与 HTML 语言结合起来的引擎
  • 视图(View):负责实际的业务逻辑实现

Django 的 MTV 模型组织可参考下图所示:

1702339-20190912115619599-772009212.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。