首先我们来看看MVC架构的示意图:
             
和访问者交互的是控制层(Controller层),控制器(controller)是同类交互的集合,每一个交互的操作,都对应了一个动作(action)。在Thinkphp框架中,全部的控制器类都必须继承于Action。
对数据库进行存取的是模型层(Model层),在Thinkphp框架中,全部的模型器类都必须继承于Model。
显示页面模板的是视图层(View层)。
上面简单描述了MVC架构的理解。
MVC理念是将网络系统划分为三个关注点:交互、数据、页面模板;也就是我们设计或分析一个网络系统,就可以从这三个角度去进行:
交互:
表现在系统提供了哪些功能,这些功能可以划分为哪些大类,每一个大类的功能分别都有些什么操作等等。
比如PHP论坛系统,我们可以粗略划分成板块、帖子、用户、站内信息、后台管理等几大类的功能,然后用户的功能里面又包括了注册、登录、修改用户信息等等的多个操作。

对应Thinkphp框架的控制层(controller层)而言,一个功能大类可以说是一个控制器类(当然,如果该类型概况的范围比较大,那么还需要继续拆分成多个控制器类),单个类型内的每一个功能就是一个动作(action,控制器类的方法函数)。

数据:
表现在系统对数据库进行了那些操作。网络系统几乎都需要和数据库打交道。那么,在进行对交互的分析和对系统本身的分析后,我们也大致上可以归纳系统需要哪些数据了。然后我们将这些数据整理归类,最终可以得出系统需要的数据表是哪些。
就刚才的PHP论坛,按照“板块、帖子、用户、站内信息、后台管理”这五个分类功能,我们可以基本归纳出它们需要:板块记录表、帖子记录表、用户表、站内信息表、后台设置表等等。

对模型层(Model层)而言,一个表可以说就是对应了一个模型类。而模型父类(Model)为这些模型类提供大部分与数据库存取的功能。

页面模板:
每一个网络系统的开发中,我们都将需要制作相当数量的页面。简单来说,控制器的每一个动作(action)都有可能产生一个页面,所以在理清所有交互,完成控制器的设计后(未写代码前),我们就可以得到需要的页面模板的清单了。然后在模板引擎的帮助下,页面模板的制作可以与控制器的开发同时进行,以提高开发效率。
按照上面的PHP论坛交互的设计,那么我们可以得到的页面模板有许多,比如板块方面,有首页模板、分区模板、板块模板等;帖子方面有帖子内容模板、发帖模板、回帖模板等。
根据“交互、数据、页面模板”这三个关注点,那么我们就可以比较全面地去分析和设计一个网络系统了。请注意这三个关注点并非孤立的,而“交互”正是“数据”与“页面模板”的基础,所以对“交互”的分析务必要做到正确并且完善。

深入理解MVC的更多相关文章

  1. 通过Ruby On Rails 框架来更好的理解MVC框架

    通过Ruby On Rails 框架来更好的理解MVC框架   1.背景    因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...

  2. 深入理解MVC与MVP

    http://www.cnblogs.com/seaky/archive/2011/04/06/1982533.html 在深入分析MVC和MVP之前,我们有必要回顾下经典的三层架构.分层是计算机学科 ...

  3. 你是怎么理解“MVC”的

    MVC就是三个字母的组合,M-模型, V-视图, C-控制器. 这些在百度上随便一索就可以索到,而且网上对这三个部分的解释又过于笼统,使人没法完全理解MVC的含义.   这里我简单的谈谈我对MVC这三 ...

  4. <转>ASP.NET学习笔记之理解MVC底层运行机制

    ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨.首先,我们回顾一下ASP.NET Web Form技术与ASP.NET ...

  5. ASP.NET MVC 理解MVC模式

    ASP.NET MVC 理解MVC模式 PS:MVC出来很久了,工作上一直没机会用,所以我也没去学.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各位园友的斧正. ...

  6. 其实想要完全理解MVC框架并不是太容易

    完全理解MVC并不是很容易.使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考.同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难.每个构件在使用之前都需 ...

  7. SpringMVC:学习笔记(1)——理解MVC及快速入门

    SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...

  8. 更加清楚理解mvc结构

      更加清楚理解mvc结构 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing 欢迎关注,有问题一起学习欢迎留言.评论.

  9. [概念理解] MVC模式和C++的实现

    [转]学习可以是一件很快乐的事,特别是当你发现以前所学的点点滴滴慢慢地能够串起来或者变成了一个环,这种感觉真好.这篇文章就这么来的. 从MVC架构开始说起吧.这两天系统了解了一下MVC架构的内容,主要 ...

  10. 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步

    深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...

随机推荐

  1. DOM基础(三)

    对于DOM来说,知识点其实并不多,要理解DOM并不难,难的是会用.可能有的人看见DOM获取元素要这么长一串单词就觉得生无可恋了.不过说实在的,如果你能理解他的意思跟用法.而且稍微再有点英语基础的话,D ...

  2. 大富豪APK安卓客户端的反编译修改和重新打包

    大富豪APK安卓客户端的反编译修改和重新打包 修改安装我们需要几个工具 DFH_3.4.X  (用于修改客户端) dnsPy        (用于修改.dll文件) 大富豪加解密.exe  ( 用于加 ...

  3. 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛

    2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 252  Solved: 1 ...

  4. 获取手机 IP

    /** *  获取用户ip * *  @return 获取用户ip */ + (NSString *)getIPAddress { NSString *address = @"an erro ...

  5. install g++ on windows

    install c++/g++ on windows     install c++/g++ on windows link 原文 1. 算是提示吧: Pick the drive and a fol ...

  6. Java虚拟机工作原理

    Java虚拟机工作原理 首先我想从宏观上介绍一下Java虚拟机的工作原理.从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac ...

  7. JSP配置了虚拟目录使用JavaBean报错

    今天遇到一个很棘手的问题,在jsp文件中使用useBean,网页返回码出现了500服务器内部错误,报错信息如下: The value for the useBean class attribute w ...

  8. CSS.03 -- 浏览器行高、字体;盒子模型--边框、内边距、外边距

    如果此时你也在自学中,请使用 FireWorks CS6 进行切图测距等,百度一下吧~ Fireworks的基本使用 新建文件   ctrl+n 打开文件  ctrl+o 调出和隐藏标尺 ctrl+r ...

  9. java 接口默认修饰符问题

    package test; public interface InterfaceTest { void todo();} /** * 以下是反编译的内容,接口里的方法默认都是public的.abstr ...

  10. PuTsangTo-单撸游戏开发04 给角色添加基本动画

    一. 跳跃与移动的优化与完善 先给上一次的内容做一次补救,也就是上一次中还留存的,由于键盘按键事件的第一次回调与后续回调之间会间隔个小半秒带来的跳跃落地后动作延迟的情况. 最终的键盘按下回调的处理代码 ...