大家好。
首先大致介绍下MVC设计模式:
MVC: Model-View-Controller 模型-视图-控制器
M: 数据处理
V: 界面显示
C: 逻辑处理
核心思想: 分层,解耦。MVC分离了 数据处理 和 界面显示 的代码,使得程序可以在不修改数据处理相关逻辑的前提下,方便地切换不同的显示界面
目的: 提高程序的扩展性和可维护性
MVC的核心思想就是模型的复用,模型不用关心处理结果展现,比如模型返回一些数据,然后交给不用的视图展现,可以使用不同的视图来访问同一个模型;代码方便维护,比如修改模型不会影响到视图(模板),反过来修改视图,也不会影响到模型;方便测试, 比如,将业务逻辑代码写在servlet里面,需要部署到容器上,然后才能测试。而将业务逻辑代码写在类里面,可以直接用main()测试(不依赖容器)
而相比于传统的MVC设计模式,现在比较流行的Django框架,相比于MVC设计模式,MVC工作机制为,M主要封装对数据库层的访问,进行增删改查,V用于封装结果生成html内容。C用于接收请求处理业务逻辑与M和V交互并返回结果。而在MVC这种设计理念中存在视图对模型数据访问效率低。例如页面的有一部分数据我并没有更新,但是提交到模型层照样回去获得返回显示。(其中的一个缺点)像简单的小型项目使用MVC设计反而会降低开发效率,层与层虽然相互分离,但是之间关联性太强,没有做到独立的重用。所以Djiango框架把MVC模式中的V视图抽离出来改写为模板T,功能和V类似都是产生html界面。又把C的功能重新封装成了V。这样就会产生Djiango框架接受用户请求和参数后,通过正则表达式匹配URL,转发给对应的视图处理,视图在调用M处理数据,再调用T返回界面给浏览器。
这样在访问上,不再依赖于控制器,而是全由视图来进行交互,解决了访问效率低的问题