对MVC的白菜式理解

简介:
今天编程用到了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,如需转载请自行联系原作者
目录
相关文章
|
XML C# 数据格式
WPF技术之xmlns
在WPF中,xmlns是XML命名空间(XML Namespace)的缩写,用于引入不同的XML命名空间,以便在XAML文件中使用特定的命名空间中的元素、属性和类型。
662 1
|
存储 SQL 人工智能
01-PostgreSQL 存储过程的基本介绍以及入门(基本结构、声明和赋值、控制结构)(下)
01-PostgreSQL 存储过程的基本介绍以及入门(基本结构、声明和赋值、控制结构)
|
6月前
|
缓存 NoSQL Java
Redis应用—8.相关的缓存框架
本文介绍了Ehcache和Guava Cache两个缓存框架及其使用方法,以及如何自定义缓存。主要内容包括:Ehcache缓存框架、Guava Cache缓存框架、自定义缓存。总结:Ehcache适合用作本地缓存或与Redis结合使用,Guava Cache则提供了更灵活的缓存管理和更高的并发性能。自定义缓存可以根据具体需求选择不同的数据结构和引用类型来实现特定的缓存策略。
351 16
Redis应用—8.相关的缓存框架
|
10月前
|
测试技术 Python
Python中的异步编程与`asyncio`库
Python中的异步编程与`asyncio`库
|
11月前
|
小程序
微信小程序之weui.wxss不能引用查找的解决方案
微信小程序之weui.wxss不能引用查找的解决方案
292 0
|
存储 缓存 Kubernetes
在K8S中,Pod优雅终止过程是什么?
在K8S中,Pod优雅终止过程是什么?
|
JSON 数据安全/隐私保护 数据格式
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
|
Java Linux Maven
IDEA安装及创建Maven项目教程【史上最详细】(一)
IDEA安装及创建Maven项目教程【史上最详细】
351 0
|
关系型数据库 MySQL Java
TimeZone-datetime在JVM时区和MySQL Session时区的转换
TimeZone-datetime在JVM时区和MySQL Session时区的转换
311 0
|
存储 编解码 缓存
阿里云CDN+点播服务助力云学堂全面提升用户在线学习体验
CDN将云学堂的点播视频资源缓存至阿里云遍布全球的加速节点上,当终端用户请求访问和获取该资源时,无需回源,系统自动调用离终端用户最近的CDN节点上已缓存的资源,提高用户访问效率和访问速度。
2164 57
阿里云CDN+点播服务助力云学堂全面提升用户在线学习体验