帮助跟我一样的小鸟理解MVC
来源:互联网 发布:买火车票软件 编辑:程序博客网 时间:2024/04/29 19:56
可能刚接触面向对象(OOP)编程的兄弟对MVC模型一直是那种可遇而不可求的心态,当听老鸟们在那满天吐沫星子的谈论MVC模型的这个好那个好,自己只有瞪着俩眼珠子在那傻傻的听着,或许听完了还不知道是怎么回事,下面就小弟的一些拙见来帮助这些兄弟们理解一下到底MVC是咋回事。。。
那到底啥是MVC设计模式呢?
MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分,具体的功能如下:
模型(Model): 业务逻辑层。实现具体的业务逻辑、状态管理的功能。
视图(View):表示层。就是与用户实现交互的页面,通常实现数据的输入和输出功能。
控制器(Controller):控制层。起到控制整个业务流程的作用,实现View层跟Model层的协同工作。
看到这儿,可能有些兄弟已经皱眉头了,心里在不住地说“操,你整这玩应也太抽象了,要是能看懂你这个,那书上写的我也能看懂了,你要是想玩死我,你Y就早说!!~~”,嘿嘿,别着急,下面我就举个实际的例子来帮助大家继续理解。
这个MVC设计模式呢,有点像现实中我们去饭店吃饭的过程。当你到一个饭店吃饭,过程是这样的,首先你得点菜啊,不用喊,一个光溜水滑,埋了八汰的小服务员就会整个小本来你面前,“先生,你来点啥?”,你看看菜谱,“给我整个小盘鱼香肉丝,再加一碗米饭。”“好的,先生稍等。”说着服务员一溜小跑朝后厨方向,“那啥。。。告诉厨师别放姜啊!~~”。。。带会儿,服务员就把你要的饭菜给你端上来了,“先生请慢用~~有啥需要帮忙的,尽管喊我。”你吃的狼吞虎咽的,根本不知道里面放的青椒妈的都没洗~~~
就这么一个简单的你要饭的过程就可以用MVC将其描述一下,你呢就相当于View,服务员呢就相当于Controller,而那个不洗青椒的该死厨师就是 Model。你一开始跟服务员点菜,就相当于我们的浏览器向服务器发出请求,服务员将你要吃的菜交给后厨的师傅,就相当于控制层将浏览器发过来的请求交给业务逻辑层来处理,而它根本不管厨师到底咋做这个菜,反正你能给我鼓捣出一盘鱼香肉丝就成,青椒洗不洗那是他的事,这也就是我们常从老鸟口中听到的“封装”,封装好啊,封的你连青椒没洗的鱼香肉丝都能吃的喷香,嘻嘻~~当服务员把一盘冒着热气的鱼香肉丝端到你面前的过程,就相当于业务逻辑层处理完后把相应传回给浏览器,然后通过浏览器显示给用户。这样就实现了一个简单的MVC协调交互,也不知道你明白点没有。。。
可能有的兄弟又要说了,“你讲MVC你就讲呗,整啥点菜啊,我昨天才吃的鱼香肉丝,现在都有点想吐啦!!讨厌~~~”,下面就给兄弟们说说在实际项目中应该咋应用这MVC。
就拿一个简单的登陆模块说,需求是你输入一个用户名、密码,如果输入的跟预先定义好的一样,那么就进入到正确页面,如果不一样,就提示个错误信息“你Y别在这儿蒙我,输入的不对!”。
这个小小的模块中,起始的输入用户名密码的页面跟经过校验后显示的页面就相当于View,而这里还需要一个controller页面,就是用于接收输入进来的用户名密码,还有经过校验后返回的一个flg(此flg就是用于判断你输入的是否正确,而跳转到相应的页面的),最后还缺一个Model,那么就是你那个用于校验的类了,他就是处理你输入的是否跟预先订好的一样不一样的,之后返回一个flg。这样就完全实现了逻辑跟页面的分离,我页面不管你咋整,反正我就一个显示,而controller呢也不管你Model咋判断对不对,反正我给你了用户名跟密码,你就得给我整回来一个flg来,就跟服务员根本不管厨师青椒洗不洗一样,而Medol呢,则是反正你敢给我个用户名跟密码,我就给你整过去个flg~~如果看到这你有点茅塞顿开了,待会就试验着写写吧!!
以上就是小弟的一些不成熟的理解,也是小弟对MVC设计模式理解的一些心得吧,可能有些地方不够准确,也欢迎老鸟们批评指正,衷心的希望这篇小文儿能对刚刚接触MVC兄弟有所帮助!!
注:这里没有提到到底是用java还是php,也没有实际的代码例子,我想只要真正理解了这个过程,代码上应该不成问题地~~
那到底啥是MVC设计模式呢?
MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分,具体的功能如下:
模型(Model): 业务逻辑层。实现具体的业务逻辑、状态管理的功能。
视图(View):表示层。就是与用户实现交互的页面,通常实现数据的输入和输出功能。
控制器(Controller):控制层。起到控制整个业务流程的作用,实现View层跟Model层的协同工作。
看到这儿,可能有些兄弟已经皱眉头了,心里在不住地说“操,你整这玩应也太抽象了,要是能看懂你这个,那书上写的我也能看懂了,你要是想玩死我,你Y就早说!!~~”,嘿嘿,别着急,下面我就举个实际的例子来帮助大家继续理解。
这个MVC设计模式呢,有点像现实中我们去饭店吃饭的过程。当你到一个饭店吃饭,过程是这样的,首先你得点菜啊,不用喊,一个光溜水滑,埋了八汰的小服务员就会整个小本来你面前,“先生,你来点啥?”,你看看菜谱,“给我整个小盘鱼香肉丝,再加一碗米饭。”“好的,先生稍等。”说着服务员一溜小跑朝后厨方向,“那啥。。。告诉厨师别放姜啊!~~”。。。带会儿,服务员就把你要的饭菜给你端上来了,“先生请慢用~~有啥需要帮忙的,尽管喊我。”你吃的狼吞虎咽的,根本不知道里面放的青椒妈的都没洗~~~
就这么一个简单的你要饭的过程就可以用MVC将其描述一下,你呢就相当于View,服务员呢就相当于Controller,而那个不洗青椒的该死厨师就是 Model。你一开始跟服务员点菜,就相当于我们的浏览器向服务器发出请求,服务员将你要吃的菜交给后厨的师傅,就相当于控制层将浏览器发过来的请求交给业务逻辑层来处理,而它根本不管厨师到底咋做这个菜,反正你能给我鼓捣出一盘鱼香肉丝就成,青椒洗不洗那是他的事,这也就是我们常从老鸟口中听到的“封装”,封装好啊,封的你连青椒没洗的鱼香肉丝都能吃的喷香,嘻嘻~~当服务员把一盘冒着热气的鱼香肉丝端到你面前的过程,就相当于业务逻辑层处理完后把相应传回给浏览器,然后通过浏览器显示给用户。这样就实现了一个简单的MVC协调交互,也不知道你明白点没有。。。
可能有的兄弟又要说了,“你讲MVC你就讲呗,整啥点菜啊,我昨天才吃的鱼香肉丝,现在都有点想吐啦!!讨厌~~~”,下面就给兄弟们说说在实际项目中应该咋应用这MVC。
就拿一个简单的登陆模块说,需求是你输入一个用户名、密码,如果输入的跟预先定义好的一样,那么就进入到正确页面,如果不一样,就提示个错误信息“你Y别在这儿蒙我,输入的不对!”。
这个小小的模块中,起始的输入用户名密码的页面跟经过校验后显示的页面就相当于View,而这里还需要一个controller页面,就是用于接收输入进来的用户名密码,还有经过校验后返回的一个flg(此flg就是用于判断你输入的是否正确,而跳转到相应的页面的),最后还缺一个Model,那么就是你那个用于校验的类了,他就是处理你输入的是否跟预先订好的一样不一样的,之后返回一个flg。这样就完全实现了逻辑跟页面的分离,我页面不管你咋整,反正我就一个显示,而controller呢也不管你Model咋判断对不对,反正我给你了用户名跟密码,你就得给我整回来一个flg来,就跟服务员根本不管厨师青椒洗不洗一样,而Medol呢,则是反正你敢给我个用户名跟密码,我就给你整过去个flg~~如果看到这你有点茅塞顿开了,待会就试验着写写吧!!
以上就是小弟的一些不成熟的理解,也是小弟对MVC设计模式理解的一些心得吧,可能有些地方不够准确,也欢迎老鸟们批评指正,衷心的希望这篇小文儿能对刚刚接触MVC兄弟有所帮助!!
注:这里没有提到到底是用java还是php,也没有实际的代码例子,我想只要真正理解了这个过程,代码上应该不成问题地~~
- 帮助跟我一样的小鸟理解MVC
- 帮助跟我一样的小鸟理解MVC
- 都说汇编难,确实难入门啦?今儿终于写出我第一个汇编!高者莫见笑,写出来或许对跟我一样的有些帮助!
- 我理解的MVC
- 把我给eclipse3.5安装J2ME插件的过程写出来,大家分享下,可能菜了点,希望对跟我一样的小菜有点帮助
- 自己写的单例,水平有限,只能写小例子,希望对跟我一样菜的人有一些帮助。
- lsmod 我跟他一样
- . Java的内存泄露跟C++程序员理解的一样
- 2006-10-12 我跟她们是一样的呀~
- 纪念一个跟我用一样手机的外人
- 【胖张】献给跟我一样的菜鸟
- 我对MVC的理解
- 我对MVC的理解
- 我对MVC的理解
- 我所理解的MVC
- 我对mvc的理解
- JSON 之我的理解跟使用
- 有没有一个妈妈,跟我一样?
- javascrip IE FireFox兼容性
- Considerations for handheld development
- 二﹑博客周刊•新鲜阅读
- 如何实现VB与EXCEL的无缝连接
- 一﹑博客周刊•程序员导语
- 帮助跟我一样的小鸟理解MVC
- Tips:给ListBox绑定数据源
- 什么是UI
- 关于ORA-00020: maximum number of processes (150) exceeded 的解决方法
- 如何写“完”UI设计说明书
- ASP.NET中文件上传下载方法集合
- ASP.NET使用确认对话框得简单方法
- Concept内容的翻译_1026(英语水平差,发出来主要是想让大家帮我指正一下,谢谢!)
- SQL Server单元测试方法的尝试