正文之前,先引入大牛刘未鹏博客mind hacks的一篇博客《编程的首要原则是什么》中的一句话:
学习一项知识,必须问自己三个重要问题:1,它的本质是什么;2,它的第一原则是什么;3,它的知识结构是怎样的。
这里结合我自己的情况,稍加改变这句话为:
学习一项知识,必须问自己三个重要问题:1,它的本质是什么;2,它的知识结构是怎样的;3,它的特性是什么。
MVC的本质是什么
这里引用百度百科的说明(以下MVC部分的引用,如未特殊说明,均来自百度百科)
MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。
那么什么是框架模式?
结合我自己的理解:
框架模式是指针对于某一特定领域,可以适用于各种应用的模式,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性
在这句话中有一个关键词:最高级别,那么比它更低级别的还有什么?
软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
单说框架重用,可能大家还不太理解,我利用框架开发一个网站,又不会开发相同的几个网站,重用性体现在哪里?为此,我们先思考一下代码重用的实现——对相同功能的实现,调用同样的代码模块,加以覆盖或重写,但并不改变其接口和结构,从而达到实现相同功能的多个应用或模块都能耦合到相同的其他代码块,保持其中一方不变,就能实现自身代码块或者其他代码块的重用。框架亦是如此,我们在多次使用同一框架或者多人使用同一框架时,根据需要框架的结构可以直接重用(复制粘贴)或者框架中的模块(如前端页面、控制端代码和模型)可以一次开发,多处使用,只要保证其接口的一致性,尤其对于多人使用同一框架,因为框架的结构标准和强制性,团队很方便的能进行协作开发,前提是团队商定好开发中的接口
参数和同一功能在不同模块的映射形式,然而,在于小伍的这次开发中,并没有很好的利用框架模式的优势,造成前后端的合作并不高效。
MVC的知识结构是什么
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,其中:
Model是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
Controller是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
下面引用一张MVC的结构交互图:
从这张图,总结一下两点:
1,用户看起来面向的是View层,但一旦涉及到用户操作与交互,直接面向的其实是Controller层。
2,View呈现的实质是Model,是经过controller层的展现,view层提供的只是展现的布局与样式。
MVC的特性是什么
1,耦合性低:利用MVC可以实现视图层和控制层分离,允许视图层与控制层的分离开发,允许更改视图层代码而不用重新编译模型和控制器代码;模型是自包含的,并且与控制器和视图相分离,所以很容易进行数据库的迁移
2,重用性高:对于不同网站和应用,由于视图层、控制层和模型层的低耦合性,同一模块代码往往可以重复使用
这些特性,决定了MVC在大型网站开发和多人协作时的代码的易集成和可维护,这也是当今MVC较为流行的原因,同样也是JSP在一定程度上不受推崇的原因。
以上就是我的一点浅显的见解,只做个人思维的一个记录,之后陆续更改补充,有不准确的地方烦请告知