选择显示字体大小

用mvc模型引导你的web设计思路

作者的blog:http://blog.csdn.net/oyiboy

习惯于过程式的开发,一直向往着面向对象。无奈半路出家人,没有一点内力基础,看了一大堆面向对象的书也只是看得一头雾水。对于mvc的概念也是偶然了解到的,感觉能和web开发结合起来让项目面向对象化。以下是我一点点心得。
先介绍一下mvc的概念:
mvc(model-view-controller),即把一个应用的输入、输出、处理流程按照model、view、controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
 模型(model):就是业务流程/状态的处理以及业务规则的制定。即是mvc的主要核心。
 视图(view):代表用户交互界面,也就是webhtml界面。
 控制(controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。

以下以一个简单的留言板作为分析例子。

1)从上面的概念来看,留言板可以切成三部份。
 模型(m):包含 数据库链接、生成数据集、数据库更新操作。
 视图(v):包含 获取模型的数据集,将数据集内填充到各种显示界面内,如(留言板列表,管理控制页面,添加修改删除界面等一切用户看得到的页面。)
 控制(c):包含 数据库更新的数据校验,将更新完毕后的结果转交给视图进行呈现。

2)三部份已经出来,下面是更进一步的细化。
 模型(m)
  数据链接:数据链接参数、链接失败处理。
  数据操作:生成固定格式的数据集、运行单行sql、解析固定格式的数据集更新数据库(内容包括有:留言记录,管理员帐号,系统设定)。
  文件操作:将文件内部格式封成数据集,并附带读取写入文件操作。(内容包括有:留言板样式设定、版权设定、搜索引擎关键字设定、留言板标题设定)
 视图(v)
    数据显示:根据要求授权给控制器[c]向模型[m]请求数据集,然后根据数据集显示出界面。
    操作结果显示:根据控制返回的数据资料决定显示的提示资料
    具体资料包括有:
      留言添加页:判断留言者是否管理员、判断本次留言是回复还是新建留言。
      留言管理页:批量删除留言、查询留言、管理员帐号管理、系统设定等。
      留言显示页:判断留言是否为管理员专用、判断本留言是否为管理员发布、是否允许回复、是否显示留言者的敏感资料、留言是否需要审核后再显示。

 控制(c)
  数据/文件操作:接收操作资料,校验数据是否符合条件,引用模型的生成数据集类生成指定数据集,然后交给相应的模型操作方法操作,并获取操作结果以预定好的格式转交给视图处理

3)系统基本上细化完毕,下一步就是将以上分析出来的东西封装成class
  模型(m):
    数据库链接和数据操作可以封成一个class。
    数据库数据集的结构,可以引用dictionary控件与数组完成。其间操作也可以封成一个class具体可以仿造asp.net中dataset对象的部份机构。
    文件操作部份封装成一个class
    文件结构定义可以封成一个class以方便控制直接引用,然后转交给文件操作class进行相应的操作。
  视图(v):
    视图部可均是以文件模式出现,也可以将部份代码封装后引用。也可以引用现有的模板类实现代码分离等。
  控制(c):
    数据校验:sql注入防御处理、日文字符替换处理、特定常用校验正则式,这个是控制器常用的函数,可以封成class也可以以函数型式存在独立文件,使用时直接引用。
    数据/文件更新操作:由于直接操作,可以避免使用class,而是以文件模式出现,每个文件处理模型(m)中的某个类。并完成控制(c)的工作。
    视图[v]模型[c]链接器:接收视图[v]要求数据集的请求,将请求转换成模型[m]合适的sql句,然后交给模型[m]数据集成生器生成数据集,然后返回给视图[v],这个处理比较麻烦,如果没必要作得太严谨的话可以直接使用字段名,并在视图[v]以sql标准的条件句进向模型[m]请求数据。

 疑:
  视图[v]模型[c]链接器,对这个的设定我还是有点迟疑的。因为在mvc中,v对m的请求中是不需要c的掺和的,但是,这个链接器的操作确实很符合c的概念,所以这里我把它放在了控制器[c]里。或许他可以放至在视图[v]内。毕竟这个是视图[v]的事。这个就看每个人对mvc的理解了。

以上基本完成了留言板的结构分析与类的抽象,有不少的地方比较繁琐,甚至是啰嗦,一个留言板其实是没必要这样,不过,这个例子里作出来的不少class可以直接使用在其它更大的项目中去,比如控制器[c]中的数据集请求转换器,校验部份、模型[m]中的数据库链接等,之所以遵循mvc模型进行编程不但是为了让程序设计更灵活,最重要一点是可以很快将项目拆开成一小块一小块,然后又将这些小块再折成更小的块,一直折到单个类的某个方法某个属性,等你完成这些小块代码后,那系统也就完成了。

经典讨论贴:
http://www.blueidea.com/bbs/newsdetail.asp?lp=1&id=2450921


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons