首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>J2EE>正文

J2EE综合:Java EE/J2EE面向对象编程之道

http://www.oklinux.cn  2008-02-26  赛迪网 jelver   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

OO思维

  经常看到不少人抱怨Java EE/J2EE中配置太复杂,烦琐,不简单易学,其实所谓简单易学是取决于你是否有OO思维方式。

  表现层的界面表单中通常是一些离散数据,也就是单个字段数据,通过Struts等框架提供ActionForm以及标签库,将这些单个字段数据封装起来和业务层的Domain Model进行了映射,因此,表现层的主要编程工作就是映射配置。

  持久层是将Domain Model对象保存到数据库中,过去使用JDBC,我们要逐个打开这些Model对象,然后每个字段逐个 保存到数据库中,如果说表现层框架是实现离散数据封装,那么持久层实现的是反方向:拆封。Hibernate是一个持久层O/R mapping框架, 也就是在对象和关系数据库之间进行映射的框架,EJB的CMP也是类似道理,因此,持久层的主要编程工作也是映射配置。

  表现层和持久层这种配置工作就如同打包邮寄一样:你首先要将你的单件用一个箱子包装起来,达到目的地,这个箱子被打开,单件被逐步取出。表现层和持久层这样做的目的是保证中间业务层完全面向对象,他们都是和一个个对象打交道,而不是单件数据字段。

  在一个真正面向对象的系统中,表现层和持久层主要工作就是配置,而且是映射mapping的配置。下面的问题就是:如何解决映射配置简单而且易用,如果拥有正确的指导配置的思维,那么配置工作就容易简单多, 否则,就倍感配置复杂。

  其实那些感觉Java配置复杂的人其实他并没有完整的OO思维。为什么这么说呢?以ORM(Hibernate)配置简易方式说明:

配置的简要之道

  首先,配置是映射配置,顾名思义,也就是在两者之间做协调,牵线搭桥,说白了,就是做红娘,但和做红娘又有些区别,做红娘可以要求双方做些改变,互相迁就,但是做映射配置,则不能这样,因为那样做就可能做出和需求要求不一样的东西。

  以持久层映射配置来说:双方是指Domain Model对象和关系数据表,如果感觉在两者之间配置映射很困难,双方做些改变,但是有可能 需求不答应,你一旦为协调而作出的改变可能偏离需求实现的目标,最后作出的系统面貌全非,根本不是客户所需要的。

  那么怎么办?很显然,紧扣需求,反映需求的那一方坚决不要变动,那么Domain Model和关系数据表哪一方反映需求呢?按照OO分析,当然 是Domain Model,Model对象我们是依据Evans Model等模型驱动设计MDD概念设计出来,他们是需求的代表。

  很显然,我们的映射配置必须顺着Model对象这个思维来配,对于名词式的Model,关联无外乎是其主要关系,当然还有继承,因此,象Hibernate 这些映射配置语法也是面向这些主要对象关系的。

  表现层配置也是同样的道理,需要将Domain Model配置成界面表单,在实际中,我们有可能采取的是通过界面收集需求,因此,这个映射配置过程也是考验Model对象是否提炼正确与否,有可能发现Model不能实现一些界面需求功能,这时反过来必须修改我们的Model,而不是仅仅在表现层这个技术层面做些补救措施就糊弄过去。

  Java EE/J2EE系统开发过程 敏捷的迭代是必然的。没有一个天才能够一步到位提炼出兼顾界面和数据表以及需求的统一模型出来。

  总之,完成一个真正面向对象的Java EE/J2EE系统,必须抓住领域建模和具体框架熟练配置两点,只有这样才能保证Java项目成功实施。最关键的是提炼出反映出业务系统的领域模型:Domain Model,完成业务建模后,就是依赖Struts/Hibernate等配置分配将Model 映射到界面和数据库,其实就是将业务模型移植到计算机领域并能够正确运行。

高聚合和低关联

  如果一个系统都被设计成相互没有任何不包含的单个对象,很显然是不能正确反映实际需求的,万事万物都是有其部分组成的,例如窗户由玻璃和框架组成,人是由胳膊 腿等身体部分组成,现实世界中,事物之间总是存在关系,聚合和组成是最常见的。

  例如订单,一个订单Orders中由客户名称和地址,订购的产品品种和数量,客户名称和地址我们可以抽象为Customer来代表,产品我们使用Product来代表,由于一个订单中可能订购了多个产品,很显然,一个订单对象中应该有多个Product对象,而且每个Product的数量不一样,我们将Product和其数量再抽象包装成OrderLine订单条目对象,这样,订单中包含多个订单条目,而且订单条目只有依赖某个订单,是其组成部分,是一种强聚合关系,不是普通的聚合或关联关系。而Customer和Order之间是一种聚合关系,如果订单没有客户信息,就不成为订单了。

  下面再以用户User这个对象为例,用户User可能拥有很多动态属性,一些属性需要运行时动态确定,用户和动态属性是一个整体和部分的聚合关系;每个用户都必然属于某个部门,因此,用户和部门属性对象之间也是一个整体和部分的聚合关系,这两种聚合关系不同之处在于:前者一个用户可能有多个动态属性,是1:N关系;部门Dept和用户User之间是1:N关系,一个部门中可能有多个用户,反过来说,对于用户User来说:它和部门Dept之间是N:1关系。

  通过以上建模过程,我们基本搞清楚两件事:这个领域中存在哪些模型对象?按照Evans的DDD理论,哪些是实体,哪些是值对象;然后我们必须搞清楚那些聚合关系,他们是整体部分的关系,用来共同组成一个完整对象的。

共3页: 上一页 1 [2] [3] 下一页

上一篇:J2SE综合--Java本地接口工作方式初探   下一篇:J2SE综合:如何使用Java网络启动部署软件

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·J2EE综合:开发J2EE应用应遵循的几点原则
·J2EE综合--对Struts中常见错误的汇总
·J2EE综合--java语言不一定就跨平台
·提高J2EE层与数据库层交互操作能力的优势
·J2EE综合--Java企业系统架构的选择考量
·开发J2EE应用时应该遵循的几个基本准则
·J2EE综合:关于Java EJB容器存取和实现
·J2EE综合:业务逻辑和数据库的访问决策
·J2EE综合--浅析Java程序员的存储过程
·J2EE综合:介绍编写XML文档的工作经验
·J2EE综合--关于权限设计的详细探讨
·开发方法之--J2EE架构的6个最佳实践
·J2EE综合--J2EE初学者需要理解的问题
·基础:Java/J2EE中文问题终极解决之道
·J2EE综合:深入谈论JSF与Struts的异同
·JSP/Servlet:J2EE开发环境配置个人总结
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java GUI中关于布局管理器的使用方法介
·Java编程交互管理工具:SecureJSH新特
·J2SE综合技术:使用Java网络启动部署软
·Java技术社区杂文 J2EE开发框架发展简
·J2EE基础:Java EJB容器存取和实现的说
·Java编程:实例分析J2ME网络编程的两种
·关于Java编程语言中EJB容器存取和实现
·J2EE中用RMI和CORBA进行分布式Java编程
·Java编程技巧 J2ME中应用程序的内存优
·介绍JSP中表单数据存储应用的一种通用
·J2EE中的业务逻辑和数据库访问决策说明
·深入讲解JSP 2.0下的动态内容缓存技术
  阅读排行
·J2EE基础:几种Portal技术的比较与评述
·J2EE 组件开发:什么是消息驱动的EJB
·J2EE综合:Struts上传多个文件的例子
·J2EE综合--关于权限设计的详细探讨
·J2EE综合--JAVA开发工具安装配置心得
·J2EE--关于JAVA的分页查询操作技术
·J2EE基础:在Struts 2中实现文件上传
·数据库相关--Hibernate的事务和并发
·Java源码分析:深入探讨Iterator模式
·J2EE基础:j2ee所包含的13种核心技术
·对J2EE开发中常用开源项目的介绍
·[J2EE] JNDI定义Oracle数据源的方法
·J2EE基础:Weblogic服务器体系结构介绍
·datatable动态添加列应当如何来实现
·J2EE综合--Java企业系统架构选择考量
网摘收藏: