喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 94  1/10  1  2  3  4  5  6  7  8  9  10  > 
     
标题: 帮助跟我一样的小鸟理解MVC  
 
leo_han (臭p孩儿)
金牌会员
Rank: 6Rank: 6
傻眼博士


UID 63903
精华 0
积分 1074
帖子 1177
金钱 1074 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2005-4-1
来自 辽宁--大连
状态 离线
帮助跟我一样的小鸟理解MVC

作者:臭p孩儿
你要是不顶,就太对不起村长的JJ啦


可能刚接触面向对象(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,也没有实际的代码例子,我想只要真正理解了这个过程,代码上应该不成问题地~~




士可杀,不可辱,皮鞋上不能有土
头可断,血可流,皮鞋不能不打油
有事您说话~~
blog:我是无敌凹凸曼
2006-7-6 11:53 AM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 由于内容条目多,故分页了,前面的页的选中的checkbox怎么保存呢
MVC设计模式是很抽象的,把其中三个组成部分弄清楚怎么回事时。在代码上分离三个组成部份就完成mvc了。mvc的出现,让编程结构化,倍感编程语言的强大力量。



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-6 05:06 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
内存不足
新手上路
Rank: 1



UID 76020
精华 0
积分 14
帖子 22
金钱 14 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-6
状态 离线
[推荐阅读] 怎么改它的背景颜色
同决,表示支持MVC结构.
2006-7-6 10:26 PM#3
查看资料  发短消息  顶部
 
gh520
新手上路
Rank: 1
初级会员



UID 31230
精华 0
积分 1
帖子 101
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-9-17
状态 离线
[推荐阅读] 求一段js代码
现在在开发WEB应用的时候,比较流行的一种做法就是使用“MVC”结构,使用如此方式去开发WEB应用程序,逻辑性强、简浩明了,使程序设计起来更加方便,快捷。何为“MVC”呢?简单的来说,它就是“模型(Model)”、“视图(View)”及“控制器(Controller)”的结合体,也就是所有的“三层”抽象结构,当然这里所说的“MVC”是针对WEB上应用而言的,“使代码和页面设计分开”便是其主导思想,这一思想在使用Java Servlet/JavaServer Pages技术的“Struts”中表现的淋漓尽致,有兴趣的可以去http://jakarta.apache.org/struts看看,这种设计模式使的程序设计人员可以专注于代码的设计、编写及调试,网页设计人员可以有更多的时间去投入设计而不用理会具体的功能实现,这种分工方式完全适应大型项目或企业级的分布式应用开发。


     从PHP5的推出可以看到,其中的面向对象功能越来越完善,使用PHP来开发大型的商业网站或者分布式企业应用已经成为可能,如果再结合Zend Optimizer,已经实现了代码的封装性。


     如何在PHP中使用“MVC”设计模式去开发WEB应用呢?记住一点(代码和页面设计分开),用一个简单的例子演示一下,比如要从数据库中查询出会员的资料以显示在网页上,这里就需要考虑到两点:1.连接数据库并取出会员资料,2.把会员资料显示在网页上,连接数据库我们使用一个数据库的类,把它叫做“DB”类吧,这个类此时就扮演了“模型(Model)”的角色,接着我们需要编写一个操作“DB”类的程序以取出数据,这个程序所扮演的角色就是“控制器(Controller)”,它接受客户端“POST”或“PUT”的数据,然后再调用“DB”类以取出数据,把这些数据都存放在“控制器(Controller)”中,最后把数据传递给“视图(View)”并按照一定的排版格式显示出来,从上面的分析可以看出,模板在这里就是扮演了“视图(View)”的角色,当然仅仅一个模板类是不能说成是MVC的,真正的MVC不是这么简单的,具体可以参考一下“JSF”。

[ 本帖最后由 gh520 于 2006-7-7 09:14 AM 编辑 ]
2006-7-7 09:12 AM#4
查看资料  发短消息  QQ  顶部
 
LuckLrj (中国php中的爱因斯坦)
版主
Rank: 7Rank: 7Rank: 7
老会员


UID 64836
精华 0
积分 2268
帖子 3057
金钱 2268 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-6-19
状态 离线
[推荐阅读] 求一个正则
不错。

支持




学习,工作累了,请访问我的小站,娱乐一下。http://www.52sunny.net
2006-7-7 09:41 AM#5
查看资料  Blog  发短消息  顶部
 
sq1228
中级会员
Rank: 3Rank: 3
一般会员


UID 66008
精华 0
积分 267
帖子 239
金钱 267 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-19
来自 浙江宁波
状态 离线
[推荐阅读] 给大家看个高级技巧
支持‘MVC’!!!
2006-7-7 10:17 AM#6
查看资料  发短消息  QQ  顶部
 
hanyang
乞丐




UID 74744
精华 0
积分 -11
帖子 282
金钱 -11 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2006-6-9
状态 离线
[推荐阅读] <a onclick="window.open('aa.php')">测试</a>
路过顶一下
2006-7-7 10:27 AM#7
查看资料  发短消息  QQ  顶部
 
nany
论坛元老
Rank: 8Rank: 8
乞丐上路


UID 20308
精华 0
积分 7460
帖子 1402
金钱 7460 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2003-5-31
来自 北京
状态 离线
[推荐阅读] ajax 求助
一个程序员好像不太能够独立完成MVC吧。。。
2006-7-7 01:39 PM#8
查看资料  访问主页  Blog  发短消息  顶部
 
jayliao (jayliao)
注册会员
Rank: 2
初级会员



UID 63361
精华 1
积分 61
帖子 68
金钱 51 喜悦币
威望 10
人脉 0
阅读权限 20
注册 2005-2-24
状态 离线
[推荐阅读] 测试下能否显示Flash
学习一下还是很不错的
2006-7-7 05:04 PM#9
查看资料  发短消息  顶部
 
hero913 (文风大侠)
高级会员
Rank: 4
现在穷疯了,没钱


UID 70150
精华 0
积分 918
帖子 954
金钱 918 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-3-23
状态 离线
[推荐阅读] 如何给Mysql字段中一个词的每个字之间加个逗号?
回复 #1 leo_han 的帖子

很搞笑,在搞笑的过程中理解了什么是MVC,不过这种
可能用的最多的可能是WEB编程,个人看法。




MSN:aaron-0913@hotmail.com
skype:chenqiangang
QQ:105915495
php我的最爱,希望志同道合的加我,聊一聊
给我留言
2006-7-8 03:11 PM#10
查看资料  访问主页  Blog  发短消息  QQ  顶部
 94  1/10  1  2  3  4  5  6  7  8  9  10  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.068320 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP