今天编程用到了java的画图功能,通过模块化处理和实践对mvc做了一些个人的理解。先要声明的是我没有对模式作过系统的学习,只是接触过一些。下面的只是个人的想法.
什么是MVC?就是
"Model-View-Controller"的缩写,看起来很深奥的样子其实没什么,这玩意儿说白了大家都明白。 都玩过魔兽吧,这东西就是典型的MVC,我们不妨这么想,这个模式分为三个层M:模型层,V:视觉层,C:控制层。M就拿魔兽里的人族的大法师来说,大法 师就是一个对象,一个模型。模型里面有大法师的属性比如生命值,魔法值,方法呢,有暴风雪等。到了底层抽象出来就是一个数据结构,一个逻辑构成的模型。V 就是我们在屏幕上能够看到的大法师的图像动作,比如移动,鼠标发出了这一动作(其实这里的这一动作就是C控制)那么通过动作C就调用了模型里的方法,模型 里的方法,控制视觉产生动作。
所以人脑产生想法产生一个Controller,一个Controller控制Model,受控制的Model改变View.这就是mvc.那有人就问, 有什么不是MVC的呢,举个jsp例子,有人喜欢把所有的代码写到jsp页面里,弄得页面杂乱无章,这就不是MVC了,为什么,因为数据层,控制层,表现 层全都混在一块了。已经无所谓什么模式了。那只能是一堆杂乱无章的代码。所以说为什么我们学jsp的时候要学javabeans,学servlet,学框 架。其实这些框架都是属于成熟MVC体系,有些高手写的jsp代码里甚至看不到有java的影子,jsp页面全部都是用来表现视觉的,而真正控制逻辑的是 servlet,javabeans,EJB等这些逻辑控制单元有时也会包含了模型层。其实我们常用的swing就是MVC模式的。
那么为什么需要这个MVC呢?比如说用java画表格,你可以在一个方法里输入表格的大小等等一系列东西然后画出一个表格。但是问题是这个方法只能画着一 个表格,如果你有耐心还可以通过设置变量来改变画表格的方式,但是你终究是在做表面的工作。那么如果我把表格抽象成一个矩阵,我改变矩阵,然后我用方法根 据这个矩阵来画。那就会非常方便。而且容易控制。假如那天你要是想往表格里填充颜色或者图像,如果你直接用像素定位,那将是一件多么令人痛苦的事。但是如 果你控制的仅仅是一个矩阵,每个矩阵项目里面保存着表格的各种信息,比如大小,颜色等等。再用你的控制方法根据这个矩阵画出你先要画的东西。这样结构清 晰,也便于修改和控制。
到了模型层,我们平时学的高数,线性代数,数据结构,算法,离散数学等等我们平时觉得没什用的东西就全用上了。因为模型里的东西全是数学和所据结构的东 西,所以别觉得基础理论没用,到时候真正用到了你才会恍然大悟,原来这种枯燥乏味的东西在这里居然用的如此精彩。如果你早一点意识到这一点,学数学就没那 么无聊了。这些是最抽象的总结,具体的东西最终要归结于抽象的东西。所以那些理论还是很有用的。
本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/134144,如需转载请自行联系原作者