Django到底是MVC还是MVT?以及MVC和MVT的区别

 

MVC是怎么来的?是什么?

最开始MVC是一种思想,全拼为Model-View-Controller,它核心思想是:分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。后来,这种分工的思想受到越来越多开发者的欢迎,被广泛应用于软件工程中,成为一种软件架构模式(如果你将它理解成一种软件设计模式,我总感觉是有些牵强的)。

框架、设计模式这两个概念总容易被混淆。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。

在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

框架模式有哪些?MVC、MTV、MVP、CBD、ORM等等;

框架有哪些?C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等

设计模式有哪些?工厂模式、适配器模式、策略模式等等

简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。

最后,MVC的思想被应用在了Web开发方面,被称为Web MVC框架。

那Django的框架模式是MVC还是MVT?

MVC的内容:M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。

V全拼为View,用于封装结果,生成页面展示的html内容。

C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。

MVT的内容:M全拼为Model,负责和数据库交互,进行数据处理。

V全拼为View,接收请求,进行业务处理,返回应答。

T全拼为Template,负责封装构造要返回的html。

很多文章说,MVT中的V就是MVC中的C控制器(controller),这种说法是错误的,在Django中MVT中的V仍然只是view,并不是控制器。MVT将MVC中控制器(controller)的功能进行了拆分,也就是说MVT在Model、View、Template三层之外,还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template。

url分发器处理过程: Django框架接收了用户请求和参数后,再通过正则表达式匹配URL,转发给对应View进行处理。View调用M处理数据,再调用T返回界面给浏览器。

用一张图来看一下MVT和url分发器的关系:

结论:Django肯定是遵循MVC思想的,但是在具体实现上,Django是MVT框架模式;而且可以说MVT与Django是紧密不可分的,也正是Django对MVT架构模式的使用,导致了我们的困惑。

“What the heck is MVC? groan. Guess that’s one more fricking thing I have to learn!”  “MVC到底是什么?抱怨。我想这是我必须学习的又一件无聊的事情!“

no, you don’t have to learn about MVC because it’s more than likely going to confuse you and lead to more questions than answers. 不,你不必学习MVC,因为它很可能会让你困惑,导致更多的问题而不是答案。

————————————————
版权声明:本文为CSDN博主「高岩_deal」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mydistance/article/details/86490694

猜你喜欢

转载自www.cnblogs.com/qingaoaoo/p/12430560.html
今日推荐