MVC模型和MTV模型

MVC模型


MVC 设计模型是一种使用 Model View Controller( 模型-视图-控制器)设计创建 Web 应用程序的模式。

Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。
    通常模型对象负责在数据库中存取数据。

View(视图):是应用程序中处理数据显示的部分。
    通常视图是依据模型数据创建的。

Controller(控制器):是应用程序中处理用户交互的部分。
    通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC的优缺点
优点

把业务逻辑全部分离到Controller中,模块化程度高。当业务逻辑变更的时候,不需要变更View和Model,只需要Controller换成另外一个Controller就行了 。
观察者模式可以做到多视图同时更新。
缺点

Controller测试困难。因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。在没有UI环境下对Controller进行单元测试的时候,Controller业务逻辑的正确性是无法验证的:Controller更新Model的时候,无法对View的更新操作进行断言。
View无法组件化。View是强依赖特定的Model的,如果需要把这个View抽出来作为一个另外一个应用程序可复用的组件就困难了。因为不同程序的的Domain Model是不一样的


MTV模型

FLask用的是MTV的模式
所谓的MTV ( Model–Template–View ),翻译一下就是模型、模板、视图。
一般是用户通过浏览器向我们的服务器发起一个请求(request),
这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

Django的MTV模式
Django的MTV模式的本质和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义有些不同,

Django的MTV分别是

M 带包模型(Model) 负责业务对象和数据库的关系映射(ORM)
T 代表模板(Template) 负责如何把页面展示给用户(html)
V 代表视图 (View) 负责业务逻辑 并在适当时候调用Model和Template
除了以上三层外,还需要一个URL分发器、他的作用是将一个个URL的页面请求分发给不同的View处理,web服务器(中间件)收到一个http请求

1.Django在URLconf里查找对应的视图(view)函数来处理http请求
2.视图函数调用相应的数据模型来存储数据、调用相应的模板向用户展示页面
3.视图函数处理结束后返回一个http的相应给web服务器
4.web 服务器将响应发送给客户端

MTV的响应模式如下:
1,中间件接收到一个http请求
2,django在url路由系统中查找对应的视图来处理http请求
3,视图函数调用对应的model模型来存储数据、调用相应的模板来展示页面

猜你喜欢

转载自blog.csdn.net/huiyinimen/article/details/83625247