对于MVC模式,深度讨论其View层问题,让View层变得更加灵活.

类别:Java 点击:0 评论:0 推荐:

编写web应用程序得时候,经常会遇到一些重复性得工作,例如:用户说我要把表格上某一列,显示在表格得第一列.
等等类似得需求变化,我们可能看起来司空见惯得事情,但是你有没有发现,我们一直处在不断修改自己代码,来适应用
户得需求变化,为什么我们不能简化这些操作,使用强化控件得方式,来简化我们得修改操作.

如果用户得需求变化,主要集中在view层上变化,对于controller层和model层没有变化,那么我们在修改代码得时候,
只要修改页面中html标签位置,只要html控件名字不发生变化,那么提交到服务器端得时候,页面功能得
操作也不会出错.所以我们得修改,主要集中在页面中那些html控件标签位置得放置,和javascript控制页面html控件
存储信息得控制.只要我们能管理好页面上得html控件和javascript得操作,我们就可以任意改动页面上得显示位置.

我想做一些常用控件,来适应用户得页面需求变化.(暂时讨论页面展示变化,对于功能性得变化,暂时不讨论)

我举一个常见得例子,页面上得增删改.(看上去很普通常见,但是实现工业化得开发也很不容易!)
使用javascript+(jsp/asp)+sql server2000 实现.

----------------------------------------------------
   ---------------------------
   - 姓名 - 性别 - 年龄 - 身高 -
   ---------------------------
   - 张三 -  男  - 30  - 170 -
   ---------------------------
   - 李四 -  男  - 45  - 180 -
   ---------------------------
   - 王五 -  男  - 22  - 168 -
   ---------------------------

   增加  删除  保存
----------------------------------------------------
备注:
增加:点击按钮会增加一行空行,可以由用户自由填写信息.
删除:点击表格中某行,点击删除按钮,可以删除这行信息.
保存:点击保存按钮,可以提交数据库用户得所有操作.

用户需求变动:
1.我想把年龄放到,性别得前面.(这个很容易实现,只要改一下查询得顺序就可以了.)
2.我想一个只显示10行数据(你可以使用分页控件,这个也很容易实现)
3.我想点击其中得一行,增加一个右键菜单,并且可以增加,删除,保存功能(这是比必须,开发一个右键菜单控件)
4.如果用户说,我不要这种显示方式,我想移动表单得形式(点击鼠标右键,可以移动得层)
(这个时候你的改动将是巨大得,如果项目基本成型,那么所有得模块都将改动,听起来简直就是恶梦,但是事实就是这样!)

解释:用户得需求得变化,主要集中在页面view层上得变化,对于controller层和model层没有改动,在修改代码得时候,
    只要修改(jsp/asp)页面中html标签位置,只要html控件名字不发生变化,那么提交到服务器端得时候,页面功能得
    操作也不对出错.所以我们得修改,主要集中在页面中那些html控件标签位置得放置,和javascript控制页面html控件
    存储信息得控制.只要我们能管理好页面上得html控件和javascript得操作,我们就可以任意改动页面上得显示位置.

    对于前三种需求变动,估计大多数人都经历过,并且改动也是很
    平常得事情,但是第四种需求变动,估计有很少程序员能忍受了,这中改动将会出现毁灭性得改动.但是现实中确实
    很常见,类似得改动我经常遇见,我得问题焦点主要集中在mvc模式中得view层,不够灵活导致.所以我们尽量想把view层变得灵活.

<A>传统得方式,使用(jsp/asp)从数据库查询出数据,然后在页面上使用循环,逐行显示出来数据,
增删改,都使用javascript控制,然后提交数据库,用户做的修改,一般使用input控件,来实现传递数据.
对于用户需求的改动,程序员拼命得改代码,对于javascript难度,各程序员水平高低不同,结果项目被
弄得各具风格,即使再强得管理,也会弄得问题百出,最后只有草草结束项目,弄得所有人身心疲惫.

<B>我建议得方式.

基于组件得开发模式,来细化mvc中得到view层.
首先开发出一般应用常见得控件,例如:表格,移动表单(要求能适应大量改动,具有很高得灵活性)
表格控件:要求可以类似Delphi中DBGride功能,要增加显示控制功能.

以上页面显示,可以使用(jsp/asp)从数据库查询出数据,然后放入表格控件内.表格控件分析数据然后显示.
对于前三种需求变化,修改表格控件得属性,就可以达到需求变化得目的.
对于第四种需求变化,修改控件类型就可以,把表格控件,换成移动表单控件.
这样就可以适应用户对于页面展示需求得变化,程序员得主要工作,就是在控件开发通用性上.

我得文章发布到了csdn论坛上,有很多人说使用javascript开发控件会难度很大,而且javascript各浏览器支持也不同,
所以编写通用得控件,工作量会很大,对于这个问题,我表示同意,一种折中得办法,就是使用javabean开发一套管理html得
控件,在开发一些简单验证得控件,这个想法看上去很想struts,但是我想解决得问题,只是struts实现得一个方面,我只想
细化view层,例如:使用javabean开发一个表格控件,这个控件可以独立得使用,也可以放在struts中使用,这样这个控件,
不但细化了view层,而且还降低了view层耦合.

 

本文地址:http://com.8s8s.com/it/it12702.htm