注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 高级技术 >> UML/OO >> Java正文

使用XML文件作为Web持久层的OO分析过程

文章来源:赛迪网 作者:dxaw 更新时间:2007-6-6 【 】 【加入收藏

在一个Web系统中有这样的需求,一个页面需要对一个XML文件进行CRUD等操作,如何设计一个系统适合这样的需求呢?

最容易直接想到的是一个类完成节点的CRUD及IO操作,但这违反了类的设计原则--类应当只有一个中心任务.

所以按功能来分我们必须要两个类:

一个类负责节点CRUD操作;// 简称CrudClass

一个类负责节点的IO操作;// 简称IoClass

这样基本可以了,再细分下去没有必要.

再来看第一个类,它是直接与一批业务代码打交道的,首先要求速度要快,如果把解析出来的Dom放在类里,一则CrudClass做了IoClass做的事,二再速度上也上不去,所以这里我把dom里面的节点对应成了一个链表,一个值和一个Map,业务代码实际处理的就是这三个东西,他们不关心也不必要知道是否存储到了文件里,而且速度上得到了充分保证.

其次各个业务代码处理的是同一事务,这里再把CrudClass做成单例(Singleton)形式的,做成全静态也可以,但这种做法不太上台面.

IoClass是CrudClass的持久化操作,他们之间实际是仓库管理员和物流调度间的关系,这种关系有以下三种实现方式:

1.在他们间实现观察者模式,由IoClass来观察CrudClass,变化后写入文件.初看这种方式很好的完成了解偶,实际上IoClass还是需要知道CrudClass的细节,否则无法更新,而且创建IoClass的过程比较麻烦,客观世界可没有这样的处理.所以说观察者处理当抛弃.

2.将IoClass作为CrudClass的成员,这种方式避免了IoClass创建的不必要的复杂过程,而且CrudClass知道IoClass的处理接口就行了,IoClass无需知道CrudClass的任何部分,实现了有效解偶,其三符合现实世界,IoClass确实应该是CrudClass的下级,只接受CrudClass指派的任务而外界无须知道IoClass,完全不必知道.

3.将IoClass独立处理出来,与CrudClass等做成JMS异步通信方式或WebService通信方式,这个想法更OO,但是成本比较高,复杂度大,在大型系统可以考虑实现这种方案.

综合上面的意见,选择方案2是最适合的.

至此对一个XML文件进行CRUD操作的系统设计完成,再适当剥离一些通用代码形成实用类就差不多了,这里不再赘述.

还是那句老话,道法自然.程序实现可以有N种实现方式,我们应该选择最符合自然的一种.

  • 上一篇Java:

  • 下一篇Java: 没有了
  • 最 新 热 门
     如何在MyEclipse快速搭建Hibernate应用
     spring aop中单独代理和自动代理的设置
     Nhibernate与代码生成器介绍
     Java多线程同步设计中使用Metux
     讨论5种跟踪Java执行的方法
     在Eclipse中使用SWT进行界面设计
     Spring 结合 Hibernate 配置 C3P0
     开发不再是苦差事 用Eclipse简化开发
     解决运行eclipse内存不足的问题
     利用Ecipse生成Javadoc乱码解决方法
    最 新 推 荐
     使用XML文件作为Web持久层的OO分析过程
     基于OO模版技术的文档Web输出新法
     个案研究:聊天室UML模型一致性问题
     采用敏捷方法进行用户界面开发
     数据库建模工具PowerDesigner总结(组图)
     如何使用AOP编程减少升级的风险(图)
     关于Java组件开发:一个概念框架(组图)
     软件项目开发之 软件过程RUP初探(图)
     实例解析:设计一个完全可扩展的应用
     java高级应用符合oo惯例的表现层控制
    相 关 文 章

    Java多线程同步设计中使用Metux
    在Eclipse中使用SWT进行界面设计
    关于在Eclipse下使用Subversion教程
    HIbernate的参数使用说明
    使用hibernate实现树形结构无限级分类
    struts标签使用举例--logic篇
    如何实现XML+XSL+javascript数据排序
    Javascript+DOM访问XML文件数据实例
    javascript+xml实现二级下拉菜单二
    javascript+xml实现二级下拉菜单一

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用