




已阅读5页,还剩89页未读, 继续免费阅读
(计算机应用技术专业论文)面向对象软件开发之模式的研究和应用(1).pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 模式,本质上即是抽象:它对具体问题、环境、最优解决方案进行抽象总 结,提炼出公共要素,在更高一个层次再现。它体现了一种抽象的重用思想 设计和架构的重用,形成了一个完整的、不可分割的思想理论体系,包含了一套 方法论它是程序设计方法学的重要组成部分。 在面向对象软件技术已经成为主流的今天,软件除了必须给用户提供所需 的基本功能外,还必须具备可重用性、可维护性、可扩展性、可移植性和灵活性。 模式的产生和应用,正是为了实现这些目标。 在饮食中心的项目开发中,将g o f 模式和j 2 e e 核心模式应用于设计、开 发中,取得了良好的效果: 在w e b 层,应用了s e r v l e t 前端控制器模式,使实现更加规范,提高了效率 和安全性。有利于重用和维护。改进了简单工厂模式的实现策略,克服了原来简 单工厂模式的局限性,同时弥补了工厂方法模式的不足。 在业务层应用了会话外观模式,以一个外观会话b e a n 封装实体b e a n ,规范 化了客户访问,减少了业务对象和客户端的耦合,集中了安全管理和事物控制, 提高了性能。 在持久性设计中,引入了数据库的各个表间分级的办法,数据库引用由父 表到子表实行按名访问,同级表间按主码、外码进行连接完成,提高了访问效率, 使数据的插入、删除更加容易。另外,利用简单工厂模式,实现了一个通用的实 体b e a n ,它可以映射为该项目数据库中的所有表,具备了一定的动态性和灵活 性。 总之,应用模式可以为软件开发提出具体解决方案,提高了软件的开发水 平和效率。模式,是面向对象软件开发的指南和学习与掌握面向对象技术糟髓的 工具和桥梁。 关键词:模式、面向对象、重用、维护 a b s r t a c t p a t t e r n ,i sa b s t r a c t i o n i ne s s e n c e i ti sa b s t r a c t i o na n ds u m m a r i z a t i o no ft h e p r o b l e m ,t h ec o n t e x ta n d t h eb e s ts o l u t i o n i ta b s t a c t st h e i re s s e n c e ,a n dr e a p p e a r st h e m o nah i g h e rl e v e l i te m b o d i e saa b s t r a c tr e u s e t h o u g h t ar e u s eo fa r c h i t e c t u r ea n d d e s i g n i t h a sf o r m e da i n t e g r a t e d a n d i n s e p a r a b l es y s t e m o ft h e o r i e sa n d t h o u g h t s p a t t e r nh a sp l a y e d ai m p o r t a n tr o l ei nt h em e t h o d o l o g yo n p r o g r a m m i n g t o d a y , o b j e c t - o r i e n t e dt e c h n o l o g yh a sd o m i n a t e d t h es o f t w a r ei n d u s t r y s o f t w a r em u s t b er e u s a b l e ,m a i n t a i n a b l e ,e x p a n d a b l e ,t r a n s p l a n t a b l ea n df l e x i b l eb e s i d e si t p r o v i d e s c o n s u l r l e r sf u n d a m e n t a lf u n c t i o n t h eg o a l sw i l lb ea c h i e v e di fp a t t e r n sa r ea p p l i e di n s o f t w a r ed e v e l o p m e n t c o r r e c t l y t h ec l a s s i c a l p a t t e r n s o fg o fa n dc o r ej 2 e ep a t t e m sa r ea p p l i e di n d e s i g na n d d e v e l o p m e n t i nt h i sp r o j e c t , a n dm a k eag o o de f f e c t : i nw e b c o n t a i n e r , s e r v l e tp o l i c yo ff r o n tc o n t r o l m r i sa p p l i e d t h ei m p l e m e n t a t i o ni n w e be o n t a i h e rc a nb em a d em o r es t a n d a r d i z e d ,b eb e n e f i c i a l t or e u s ea n d m a i n t e n a n c e ,a n di m p r o v et h ee f f i c i e n c ya n ds e c u r i t y t h ep o l i c yo f s i m p l ef a c t o r yi s r e f o r m e d ,a n da p p l i e d t op r o d u c ec o m m a n d o b j e c t s ,w h i c he l i m i n a t e st h el i m i t a t i o n so f p a s ts i m p l ef a c t o r ya n dm a k e su p t h ed e f e c to f f a c t o r ym e t h o d i ne j bc o n t a i n e r , s e s s i o nf a c a d ei s a p p l i e d , a n dae n t i t y b e a ni s e n c a p s u l a t e db y s e s s i o n b e a n ,w h i c h n o m a l i z e sa c c e s so fc o n s u m e r s ,r e d u c e s c o u p l i n g b e t w e e n b u s i n e s s o b j e c t s a n d c o n s u m e r s ,c e n t r a l i z e ss e c u r i t ym a n a g e a n dt r a n s a c t i o n c o n t r o l ,a n di m p r o v e sp e r f o r m a n c e i nd e s i g no f d u r a b i l i t y , c l a s s i f y i n gt a b l e so f d a t a b a s ei si n t r o d u c e d ,a n dt h er e f e r e n c e o ft a b l e st os u b t a b l e sa c c o r d i n gt 0n a l l l e t h et a b l e si nac l a s sw i l lb ea c c e s sb y r e l a t i o n sb e t w e e nk e ya n df - o r e i g nk e y , a n di m p r o v ea c c e s se f f i c i e n c y , w h i c hm a k e s i n s e r t i o na n dd e l e t i o nm o r ee a s e s i m p l ef a c t o r yi sa p p l i e dt oi m p l e m e n ta g e n e r a l e n t i t yb e a nw h i c h c a l lh o m o l o g u ea l l t a b l e sd y n a m i c a l l y i nb r i e f , a p p l y i n gp a t t e r n sp r o v i d e ss o f t w a r ed e v e l o p m e n tc o n c r e t es o l u t i o n , a n d i m p r o v e s o f t w a r e d e v e l o p m e n t p a t t e r n i s a c o m p a s s a n d b r i d g e o f m a s t e r i n g o b j e c t o r i e n t e ds o f t w a r ed e v e l o p m e n t k e y w o r d :p a t t e m ,o b j e c t o r i e n t e d ,r e u s e ,m a i n t a n e n c e 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及 取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包括为获得 电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一 同工作的同学对本教研室做的任何贡献均已在论文中作了明确的说 明并表示谢意。 签名:聋叠 日期:2 0 0 4 年午月2 9 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规 定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允 许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全部 或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等 复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:莹;鱼 导师签名 日期:2 0 0 4 年华月2 1 相关术语 引言 1 ) 模式,“p a t t e m ”的中译法,也有译为样式,本文中一律采用我国比较常 用的说法一“模式”,避免产生歧义。 2 ) j 2 e e - - j a v a2e n t e r p r i s ee d i t i o n ( j a v a2 平台企业版) 为s t m m i c r o s y s t e m 和 其他供应商所开发,是j a v a 构建处理企业处理的标准规范,功能非常强 大。 3 ) r u p - - r a t i o n a lu n i f i e dp r o c e s sr a t i o n a l 统一软件过程。r a t i o n a l 公司为现 代软件工程提出的一套关于软件的需求收集、需求分析、设计、实现和管 理需求变更等的方法。它基本已成为现代软件工程的标准。 4 ) u m l - - u n i f i e dm o d e l l a n g u a g e 统一建模语言,为描述现代软件工程建模 的标准语言。 5 ) g o f - - g a n g o f f o u r “四人帮”,为研究模式最著名的四个人,曾合著设 计模式:可重用的面向对象的软件元素( d e s i g n p a t t e r n :e l e m e n t so f r e u s e o b j e c ts o f t w a r e ) 一书,书中描述了2 3 个经典模式。 6 ) 本文通过一个项目的需求收集、分析、设计和实现阐述对“模式”的研究 和应用,重点在于“模式”。 2 项目背景 本项目是饮食服务中心的办公自动化项目,由我所在的教研室承担,其主 要目的是开发一个能使饮食服务中心人员以不同的身份从网络上登录,并进行 查询、计算和管理的自动化软件信息系统。 该项目要求饮食中心人员能以餐厅经理、采购人员、验收人员、库管人员、 中心主任和系统维护人员约身份登录进系统,进行计划的提交,采购计划的生 成等活动,要求要计算采购后形成的诸如成本价、调拨价等各种价格以及要形 成多种报帐单供财务处报帐用。 客户要求:1 系统是坚固的,可靠的。 2 速度应该尽量快。 3 饮食中心的人员能在不同的地点登录系统,与系统交互。 4 系统可以保存各种计划,报帐单,调拨单等数据。 引斋 3 技术选择 以前,开发类似的系统往往采用“c s ”( 客户机月匣务器) 两层模型,它的 优点是服务器端负担较轻,可以实现较高的效率,但它必须要在客户机上安装 软件,很不灵活,维护费用较高,扩展性差,特别是若系统要升级的话,必须 要升级各个客户机的软件,十分繁琐,大大限制了系统的使用。 随着网络规模的增大,其维护费用剧烈膨胀,迫切要求出现一种新的模型 以解决这些矛盾。三层n 层模型是一种全新的概念模型,它一改传统的互联网 应用程序中的c s ( 客户服务器) 两层模型,并引入了中间件概念,具有 不可比拟的优势。 随着面向对象,以及i n t e r a c t 技术的发展,分布式亦越来越成为重点,分布 式组件技术便应运而生,它由面向对象技术发展而来,以面向对象技术为基础, 其可重用性高,可维护性好,可扩展性强,而分布式组件技术尤其适用于网络 应用。现在,流行的分布式组件技术主要分为三种: 1 、 2 、 3 、 c o m d c o m ( 组件对象模型) , c o r b a ( 公用对象请求代理服务结构) , j a v a 标准。 m i c s o f t 的c o m d c o m 虽然和w i n d o w s ,o f f i c e 等它自己的产品结合较好,但 是,它不跨平台,可移植性差。c o r b a 虽然满足了上述要求,而且博大精深, 但难于在短期内掌握。丽j a v a 是天生的跨平台软件,可移植性自然是非常之好, 在几年之内,已相继推出了几个版本,并且,它易于学习掌握。 j 2 e e ( j a v a2 平台企业版) 是基于j a v a 技术的分布式企业应用的先进平台 和分布式组件技术的优秀代表,它具有标准j a v a2 的许多特色优势,例如“编 写一次,到处运行”的可移植性、数据库访问的j d b ca p i 、且支持同现有企 业资源进行交互的c o r b a 技术,在此基础上,它添加了对企业j a v a b e a n s 组 件、j a v as e r v l e t sa p i 、j a v a 服务器页面和x m l 技术的支持。显然,j 2 e e 在开 发企业化信息平台方面,就具备了很强的优势。 所以,经过考虑比较。本教研室最终选择了j 2 e e 技术来完成这个项目。 软件开发包括需求收集、分析、设计、实现和测试等几个过程。本教研室 根据r u p ( r a t i o n a lu n i f i e d p r o c e s sr a t i o n a l ) 统一软件过程,采用r o s eu m l 为分析、设计工具,以w c b s p h e r es t u d i o 为实现、调试工具,以用例驱动,迭 代的方法进行开发,力求达到较好效果。 2 面向对蒙软件开笈之模式的1 i j 究与应用 4 关于程序设计方法 毋庸置疑,以上我们采用的技术和选用的工具都是较先进和优秀的,但是, 有了它们并不等于就能开发出满足用户需要的软件。j 2 e e 的程序开发,虽然是 面向组件的,但究其根本还是属于面向对象的程序设计方法范畴。它与传统的 面向过程的程序设计是不同的,有一套自己的原则和方法,新的软件观,即对 象软件观,正逐步成为软件设计的主流思想。要掌握面向对象的程序设计思想 精髓,解决面向对象的软件的常见问题,开发出真正的面向对象软件,模式, 作为一种指导思想和学习的捷径,无疑是必不可少的。应用模式思想进行设计 实现,也成为增强软件开发能力,提高软件水平和质量的一条较好途径。 5 本人所作工作 在此项目中,我参加了需求收集,独立完成了软件需求分析、设计和实现 等各个步骤的研究和开发。在开发实践中,我研究了各种模式,并把它们应用 于实际,取得了良好效果。 第1 章程序设计方法学发展回顾 1 1 程序设计方法学的产生 程序设计方法学是讲述程序的性质以及程序设计的理论和方法的一门学 科。自1 9 6 8 年,e w d i j k s t r a 首先提出“g o t o 语句是有害的”,向以前的程序 设计方法提出挑战开始,程序设计方法引起了许多计算机科学家的重视和研究, 正是在这广泛而深入的讨论和研究中逐渐产生了程序设计方法学。 随着计算机的出现,程序设计方法也就产生,计算机硬件的发展经历了电子 管、晶体管、集成电路、大规模和超大规模集成电路的阶段,程序设计语言的发 展也经历了机器语言、汇编语言和高级语言的阶段。以前,程序设计方法的重点 是放在具体的细节上,关注如何尽可能多地使用一些技巧,以节省内存空间,提 高运算速度。随着计算机技术突飞猛进,开发的软件的规模愈来愈大,程序设计 方法的主要问题逐渐转化为程序设计思想和架构,体现了一种由具体向抽象的发 展过程,程序设计必须采取一种新的策略和方法,程序设计方法学也必须有全新 的内容。 1 2 传统软件开发的危机 传统的面向过程软件是一种结构化软件,它的程序设计方法也是结构化程 序设计方法,它遵循面向过程的问题求解方法,这是面向机器的,面非砸向编程 人员的,它是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解 决过程,也就是它的重点在于机器是否能理解,而不在于编程人员是否能理解, 这样,就直接导致了软件的可读性,可维护性,可靠性,开发效率差。因此,我 们可以获得好结构的程序,但是,却不能获得程序好的可读性和正确性。所以, 为了获取好的可读性和正确性,我们往往采取降低程序效率( 时间和空间效率) 的办法。 以后,程序设计方法中又陆续产生了模块化,数据抽象等技术,在一定程 度上缓解了问题,但是,随着技术的发展,软件规模的扩大,这些问题又尖锐地 暴露了出来研制软件的周期过长,可靠性差,维护困难。软件的开发面临着一 场“危机”。它迫切要求对程序的设计方法,软件的编制、管理和维护进行研究。 面向对象软件开发之模式的研究与应用 1 3 曙光一面向对象技术的出现 在这些矛盾和问题的推动下,程序设计方法最终选择了面向对象技术,基于 面向对象技术进而产生了一整套软件的设计、实现和测试以及管理需求变更的软 件工程方法体系。问题的解决出现了一线曙光。 对象,是将一组数据和作用在它上面的一组操作或过程封装在一起组成的实 体。面向对象问题求解关心的不仅仅是孤立的单个过程,而是孕育所有这些过程 的母体系统,它能够使计算机逻辑来模拟描述系统本身,包括其组成,各种可能 状态,以及系统中可能产生的各种过程与过程引起的系统状态切换。它代表了一 种全新的程序设计思路和观察、表达、处理问题的方法。 面向对象方法的显著特点是:它更接近于人类的思维规律,因而设计出的软 件系统能够更直接、自然地反映客观现实中的问题。事实上,客观事物是由不同 的对象所组成,每一对象都有自己的运动规律和内部状态,不同对象之间的相互 作用和相互通信构成了完整的客观世界。因此,它降低、分解了问题的难度和复 杂性,提高了整个求解过程的可控制性、可监测性和可维护性,从而达到以较小 代价和较高效率获得较满意效果的目的。 然而,事情不总是一帆风顺,软件世界里充斥着很多劣质产品,还有很大一 部分尚未面世,便半途天折,它们中存在着这样那样的问题,总结起来有: 1 过于僵硬。很难在一个软件系统中加入一个新的功能,因为它往往意味 着在建造一个独立的新模块时,要改动许多已有的模块,其工作量大大增 加,且会引入很多不可预料的问题和困难。 2 过于脆弱。在软件系统中对一个地方的修改往往会造成另一个看起来没什 么关系的地方发生故障,很多故障常常无法预测。 3 重用率低。软件重用一般是代码、函数和算法、数据结构级的重用,重用 方法很多采用最原始的源代码剪贴。 4 黏度过高。对软件系统的扩展往往要破坏原有的设计意图和框架,而不是 保存原有的设计意图和框架。 对于这样的情况,人们又提出了面向对象软件开发的原则,遵循它们,人们 便可以开发设计出质量优良的软件,这些原则有: 1 “开一闭”原则:系统应该在不修改已有源代码的情况下扩展系统,改变 模块行为,即一个软件实体应当对扩展开放,对修改关闭。从另一个角度 说,它是对可变性的封装原n - 一将系统的可变因素封装起来。 第一章程序砹汁方法学发展同顾 2 里氏代换原则:一个软件实体如果适用于基类的话,一定可以适用于子类, 它是对“开一闭”原则的补充。它严格的表达是:如果对每一个类型为 t 1 的对象o l ,都有类型为t 2 的对象0 2 ,使得以t l 定义的所有程序p 在所 有的对象o l 都代换为0 2 时程序p 的行为没有变化,那么类型t 2 是类 型t 1 的子类型。里氏代换原则是继承重用的基础,只有当衍生类可以替 换掉基类,软件模块的功能不受影响时,基类才能被真正重用,而衍生类 才能在基类的基础上增加新的行为。 3 依赖倒转原则:要依赖于抽象,而不要依赖于具体。传统的过程性系统的 设计办法倾向于使抽象层次依赖于具体层次,倒转原则就是要把这个错误 的依赖关系颠倒过来。面向对象软件的设计中,抽象是基础,抽象决定具 体,所以要依赖于抽象。它的另一种表述是:要针对接口编程,不要针对 实现编程。 4 接口隔离原则:使用多个专门的接口比使用单一的总接口好。这里的接口 应理解为角色,一个特定的接口代表一个角色,丽不是多个角色,所以它 又叫角色分离原则。准确而恰当地划分角色以及角色所对应的接口,是面 向对象的一个组成部分。 5 合成聚合重用原则:在一个新的对象里面使用一些已有的对象,新的对 象是通过向这些对象的委派达到重用已有功能的目的。因为很多时候,一 个类只扮演一个角色或担负一项责任,而不是另一个类的“一种”,所以, 这时一定要用合成聚合重用,而不用继承重用。 6 迪米特法则:一个对象应当对其它对象尽可能少的了解。即两个类之间不 应该发生直接调用,可通过第三者转发这个调用。这样,当一个对象发生 改动时,它对其它对象的影响便很小,不会将对它改动产生的压力传递出 去,保证了其它对象的稳定性和可靠性。 归纳起来,它们体现出了这样的精神: 软件开发必须以不修改原有已开发好的软件。通过扩展来增加新功能,实现 “即插即用”为目标,以基于抽象设计实现,基于数据封装、继承、多态这些 面向对象的特性,封装可交性,模块间尽量减少通信为手段,达到很好的可扩 展性,可维护性,可管理性。 它们是理论指导,对于实践,它们有重要意义,但是,怎样实践,即我们怎 样把理论运用到实践中,最终获得满意效果,还需要一套完整的思想和具体指导。 6 面向对象软件开发之模式的研究与应用 1 4 豁然开朗一模式的引入和应用 模式,是人脑把握和认识外界的关键。模式化的过程是把问题抽象化,忽 略了不重要的细节后,发现问题的一般性本质,并找到普遍适用的解决方案的过 程。 模式的本质便是抽象:对问题的抽象,对环境的抽象,对最优解决方案的 抽象。它是对具体问题、环境、最优解决方案的总结,经过提炼出公共要素后, 在更高一个层次上对它们进行再现。模式所描述的问题及问题的解答都应当具有 代表性。虽然问题及问题的解答以不同的形式重复出现,但其本质一样,这就是 模式。模式理论是一个完整的、不可分割的整体系统和思想体系,它包含了一套 方法论。 模式的研究起源于2 0 世纪7 0 年代的建筑工程设计大师c h r i s t o p h e r a l e x a n d e r ,他发表了很多关于城市规划和建筑设计的著作,其中明确提出了模 式概念。其观点是如此的精辟和切中了问题求解的本质,虽然,尽管这些是针对 城市建筑的,实际可适用于所有的工程设计领域,包括软件开发设计、经济学等。 模式是由一个特定环境、一个问题和一个解决方案三部分及其关系组成的 规则。自从w a r d c u n n i n g h a n 和k e n t b e c k 用模式的语言指导s m a l l t a l k 新手开始, 模式的思想便浸入了软件领域。其中以“四人帮”e r i c hg a m m a 、r i c h a r dh e l m 、 r a l p hj o h n s o n 和j h o nv l i s s i d e s ( g a n go ff o u r , 或g o f ) 最为著名,他们是d e s i g n p a t t e r n :e l e m e n t so fr e u s eo b j e c ts o f t w a r e 一书的作者。他们对大量项目中的可重 用思想进行了收集、分析并加以概括整理,最终形成了2 3 个经典模式。随着这 一经典著作的问世,模式概念便在软件业中迅速普及。 优秀的软件设计师总是在追寻这样一种思路:设计应该独立于实现的细节, 它通常被看作是一个抽象的概念,而实现是个代码的具体实例。在开发过程中, 虽然一些情况下一个高层次设计的某部分可以在许多技术下保持不变,但更多的 情况是,允许细节和实际的信息来影响并告知系统的结构。模式的作用就是获取 这些结构上的信息,描述为预见性的或回顾性的设计和设计的原理,讲述从问题 到解决,说明环境,获取工作的动力以及因此产生的结果。 模式是一种思想,它在特定的环境中起作用,并且也可能在应用于其它环 境中,它们都有以下共同特征: 模式来源于经验,但高于经验。 模式总是以一种结构化格式记录的形式出现。 7 第一章程序设计方法学发展回顾 模式的出现实现了重用,避免了重新设计。 模式的本质是抽象,所以存在于不同程度的抽象当中。 模式并不是一成不变的,它也在不断地被完善,最优实践是过去的最优, 因而它是会随着技术的发展而发展的。 模式可以用来交流设计和指导最佳实践。 多个模式可以一并使用,以解决复杂的问题。 模式,是千百人心血的凝结和升华,是千百次成功和失败的总结和提炼。 要理解面向对象技术的精髓,抓住面向对象技术的灵魂,模式,无疑是必不可少 的指针和桥粱。如果我们对模式有了比较清楚的研究,则我们以后对面向对象的 软件开发与设计就上了一个层次,前景一下便豁然开朗了。 总之,尽管在面向对象技术中还保留着面向过程的语句结构,又出现了组 件化等技术,但是,只要有问题,就会有解决方案,就会体现抽象和实现的分离, 它们就仍然不能脱离模式,所以,我认为,模式仍然是软件设计开发的指针,前 景广阔,大有作为。 第二章j 2 e e 简介 j a v a2 企业版( j 2 e e ) ,构建了j a v a 方面企业处理的标准规范。它旨在提供 平台无关的、可移植的、多用户的、安全的和标准的企业级平台来支持j a v a 语 言服务器端部署。j 2 e e 是一个规范,而不是一个产品,它定义了人们编写企业 级软件时必须遵循的准则。 客户机一服务器应用结构,即两层体系结构,逐渐转为多层体系结构。j 2 e e 平台支持三层侈层体系结构,它( 三层侈层体系结构) 在终端用户和后端系统 间引入了其他层,形成了中问件,所以,它比传统的应用体系结构( 两层体系结 构) ,具有更大的灵活性。多层结构本来增加了创建、测试、配置、管理和维护 应用组件的复杂性,而j 2 e e 平台正好降低了这些复杂性。 2 1 , 1 2 e e 技术 j 2 e e 是一整套功能非常健壮的开发企业级中间件的规范,它为企业级服务器 端应用的开发人员提供了巨大的便利。j 2 e e 平台是建立在j 2 s e 中所包含的技术 之上的,j 2 s e ( j a v a 2 平台标准版) 具有“编写一次,到处运行”的可移植性,j 2 e e 不但继承了这些优势,并且向组件化方向发展。可移植性本来就是j a v a 的一大 优点,而组件化更加强化了j a v a 的可重用性,并且具有很强的可扩展性,它们 也正是企业化软件的基本要求。j 2 e e 技术包括: 企业级j a v a b e a n ( e 朋) e j b 定义了如何编写服务器组件,并且为服务器 端组件和管理它们的应用服务器之间提供了标准的协议。e j b 是j 2 e e 中的重要 组成部分。 j a v a 远程方法调用( 砌i ) 和r m i - - i i o pr m i 是j a v a 语言自身提供的在 分布式对象间通信的机制。r m i - - i i o p 是r m i 可移植的扩展,它可以应用i n t e m e t i n t e r - o r b 协议,并且能与c o r b a 集成。 j a v a 命名和目录接口( j n d i )j n d i 用于访问命名和目录系统。它可以在 网络中连接e j b 组件和其它资源。 j a v a 数据库连接( j d b c )j d b c 是访问关系型数据库的a p i 。它的价值在 于允许访问任何关系型数据库都使用相同的a p i 。 j a v a 事务处理a p i ( j t a ) 和j a v a 事务处理服务( j t s )j t a 和j t s 规范 为组件提供了可靠的事务处理支持。 j a v a 消息服务( j m s )j m s 允许j 2 e e 部署通过消息进行通信。 第二章j 2 e e 简介 j a v as e r v l e t s e r v l e t 是一些用柬扩展w e b 服务器功能的网络组件,它基于 请求棚自应( r e q u e s t r e s p o n s e ) 机制。s e r v l e t 从客户端获得请求,然后,将响应 结果返回客户端。它的这种特点使它非常适合与w e b 任务,它更适用与处理简 单的请求响应( r e q u e s t r e s p o n s e ) 任务,而且它们不需要应用服务器所提供的 复杂服务支持。 j a v a 页面( j s p )j s p 和s e r v l e t 非常相似,它的脚本可以编译为s e r v l e t 。 但是j s p 更注重解决客户端的外表和显示的问题,将显示从整个部署中独立出 来,并且更加容易维护。 j a v ai d lj a v ai d l 是基于j a v a 的对c o i 也a 规范的实现,j a v ai d l 允许与 其他语言集成,而且它能够让分布式对象利用c o r b a 提供全面的服务。所以, j 2 e e 与c o i m a 是完全兼容的。 j a v a m a i lj a v a m a i l 服务可以使应用程序以一种平台无关、协议无关的方式 发送电子邮件。 w e b 容器e j b 容器 l 卿_ i 啪_ i s 酬豇一 图2 1j 2 e e 基于组件的架构 2 2j 2 e e 基于组件的架构: j 2 e e 基于组件的开发模型的中心就是容器的概念。容器是标准化的运行环 境,它提供了特定的组件服务。组件可以在任何j 2 e e 平台上获得这些服务。全 部e j b 容器自动支持e j b 组件的事务处理和生存周期管理,以及b e a n 的查找和 i o 面向对象软件开发之模式的研究与应用 其他服务。容器还为企业信息系统提供了标准的访问。( 图2 一1 ) 2 3 j 2 e e 层次架构模型: 因为j 2 e e 平台及构架是分层系统,每个层是系统中所考虑事宜的逻辑划分。 每个层在该系统中被分配唯的职责。每层是相互逻辑分离的,层与层间松散耦 合。如图2 2 所示: 相关事务逻辑划分的五层模型 图2 2j 2 e e 层次架构模型 客户端层用来与客户交互,并把来自系统的信息显示给客户( h t m l 客 户、j a v aa p p l c t s 和j a v a 应用等) 。 w e b 层产生表示逻辑,并接受来自表示客户端的用户反馈,在所接收的 客户端请求的基础上,对用户的请求产生相应的回应。j 2 e e 平台中,是由w e b 容器内的s e r v l e t 和j s p 来实现这一层的。 业务层处理应用的核心业务逻辑。业务层为低层业务服务组件提供必要 的接口。业务组件通常实现为e j b 容器内的e j b 组件。其中,e j b 容器提供组 第二章j 2 e e 简介 件生命周期,管理持久性、事务和资源分配等。 集成层企业的信息系统服务,包括数据库系统、事务处理系统、遗产系 统和企业资源计划系统等。 资源层包含业务数据和外部资源,比如主机和遗产系统等。 2 4 j 2 e e 对客户端组件的支持 j 2 e e 客户层支持多种客户端类型,使用普通的h t m l 页面、j a v a 服务器页 面( j s p ) 技术生成的动态h t m l 或j a v aa p p l e t ,可以通过w e b 浏览器提供给 客户端,也可以使用独立的j a v a 语言应用程序提供客户端。 2 5j 2 e e 对业务逻辑组件的支持 基于j 2 e e 的平台,在中间层,业务逻辑被实现为企业j a v a b e a n 组件( e j b ) 。 它使应用程序开发人员可以把精力集中在业务逻辑上,提供可靠、可扩展服务的 复杂工作则由e j b 服务器处理。 j 2 e e 平台和e j b 结构是相互补充的。e j b 组件模型是j 2 e e 程序设计模型的 支柱,从而定义了更大规模的、分布式的程序设计环境。 2 6 j 2 e e 价值地位 基于j a v a 语言和技术的j 2 e e 平台是最适用于企业级分布式环境的应用结构 之一。j 2 e e 平台是一个可以给i t 机构、应用开发者和产品供应商带来以下好处 的标准: 供应商可以开发运行在支持j 2 e e 平台的任何系统之上的产品。 i t 开发者会从可移植性组件技术上受益匪浅,r r 应用独立于供应商,使 得盯机构不再依赖于某一个供应商。 i t 开发者可以专注于业务处理的需求,由应用服务器处理一些诸如多线 程、同步处理、事务、资源分配和生命周期管理等复杂问题。 i t 机构可以根据他们的需求选择最适合的和代价最小的开发产品、部署 产品和部署平台。 j 2 e e 是一个工业标准,而不是某个供应商特有的结构,它不可能被某个 企业所垄断,有利于保护企业的投资。 开发组可以更快地创建新的应用和系统,这可以缩短产品开发周期,降 低开发成本。 j 2 e e 是分布式计算的标准开发平台保证了所开发的应用建立在成熟的平 面向对象软件开发之模式的 i 7 f 究与应用 台之上。 j 2 e e 平台把应用在物理上清晰、有逻辑性地分成多层,因此,自然满足 了多层应用的需求。 第三章软件设计架构简述 通过收集用户需求,形成了业务流程( 附录a ) ,然后进行需求分析( 需求收 集和需求分析见附录b ) ,经过思考权衡,形成一个软件设计构架( 图3 1 ) 。 图3 一l 软件设计构架包图 总体上,我的设计思路是:以s e r v l e t s 为前端控制器,负责管理用户的登录, 视图的分发以及视图数据的获取等,以会话b e a n 实现项目的工作流,将会话b e a n 作为一个外观,封装实体b e a n ( 图3 - - 2 ) 。 图3 2 软件设计的基本结构 第四章模式的研究和应用 4 1 概述 本章主要论述把g o f 经典设计模式以及j 2 e e 核心模式应用于饮食中心项目 的解决方案,以期达到服务质量( q o s ) 较好( 可扩展性强、性能优良、安全可 靠,有一定的灵活性) 的目的。在表4 一l 列出了本项目所使用的模式,以及每 种模式的简单描述: 表4 1 各层模式简述 如前所述,j 2 e e 架构分五层,但主要关注的是中间三层,即w e b 层、业务 层、集成层,本项目主要应用模式的解决方案也是关于这三层的,但是,属于业 务层的值对象模式和属于集成层的数据对象访问模式以及利用简单工厂模式实 现一个通用的实体b e a n 与数据库持久性设计关系紧密,所以,本章将按w e b 层 模式,业务层模式以及持久性设计模式展开论述。 4 2w e b 层 基于三层多层架构模型,设计w e b 层应用程序的难点是创建结构合理而简洁 的瘦客户机层,如何组合正确的应用程序的外观和行为,包装表示逻辑,不把任 何业务逻辑放到这一层中,并创建易于阅读和易于维护的代码,是我们要考虑的 问题。此外,w e b 层通常还有其它要求,如用户验证、会话管理、和请求处理等。 在这一小节,我们主要讨论应用模式在w e b 层的解决方案。 第四章模式的研究和应用 4 2 1 前端控制器 4 2 1 1 设计要求 系统需要给客户端用户提供一系列的页面视图,以接受客户端用户访问,为 客户端用户显示查询各种菜品,各神表单的结果,以及接收客户的输入数据,格 式化后提交给服务器端。所有这一切,要求w e b 层能够处理客户端的请求,以 支持系统服务的集成,内容检索,视图管理以及导航。 4 2 1 2 过去的解决方案: 过去,对于用户访问系统一般是采用把一个登录主页( j s p 或h t m l 页面) 放 在最前面,作为客户端用户与系统的最初联系点,用户一登录,就访问该页面, 用户登录后提交,系统服务器端接收登录信息,验证该用户身份、口令后,允许 该用户进入系统。 系统中,从上一个页面欲连接下一个页面,一般用 直接连接,或用 直接指定。用户访问系统时,每访问 一个页面,便会在地址u r l 栏上显示出该页面地址,或用户鼠标右键单击该页 面也会显示出地址,在用q h r e f 连接的页面上,甚至可以查出下一页的地址。 这样做,该系统的j s p 视图之类的资源没有向用户隐藏,它允许了用户直接 访问。如果用户记住了这些页面地址,对于其中的一些页面,不用登录,便可输 入该页面u r l 地址直接访问,即用户可以在不登录的情况下进入系统,则该系统 的安全性便失去了保障,我们所设的登录验证机制也就完全失去了作用。这无疑 是不合理,也是不安全的。( 图4 1 ) 而且,控制逻辑分散在整个应用中,通常 在多个j s p 视图中重复出现,每个视图被要求提供自己的系统服务,会导致用户 在j s p 中嵌入大量的重复的j a v a 代码( 也称做s c r i p t l e t s ) ,多个j s p 中重复 的控制代码也需要在每个j s p 中维护,工作十分繁复。( 图4 2 ) 再有,视图导 航留给了视图处理,导致了混合视图内容和视图导航。所以,系统有必要对客户 端的请求进行控制,即用户应该访问哪一个页面或其它特定资源由系统决定或控 制。这样,我便引入了前端控制器模式。 1 6 面向对象软件开发之模式的研究与出用 图4 1 客户端直接访问j s p图4 2 视图包含控制和格式化 4 2 1 3 前端控制器模式解决方案 前端控制器模式是j 2 e e 核心模式。控制器提供一个控制和管理w e b 请求处理 的集中式入口点,它使用某控制器作为处理请求的最初联系点,管理着请求的处 理。包括调用安全服务( 验证和授权、委托业务处理、管理合适的视图选择) 等 等。控制器的集中式控制,可以提高系统的安全性,以及减少视图中的业务逻辑 ( 减少视图中j a v a 代码的嵌入) 以提高代码跨请求的重用性。如图4 3 为前端 控制器的类图模式。 圈 图4 - 3 前端控制器模式类图 前端控制器模式涉及了以下几个参与者角色: 控制器:控制器是系统中处理所有请求的最初联系点,它授权某助手以完成用户 的验证和授权,或者启动连接检索。 1 7 第叫章模式的研究和应用 分发者:分发者负责视图管理和导航,管理选择哪个视图提供给用户,提供视图 的静态分发,或者更复杂的动态分发机制,并且提供分发资源控制。分 发者可以封装在控制器里,或协同工作的单独组件中。 助手:助手负责帮助视图或者控制器来完成其处理。它收集该视图需要的数据, 存储其中间模型,修改视图使用的数据模型,服务视图对数据的请求。 视图:视图向客户端显示信息,从模型中检索信息。 由类图可以看出,前端控制器模式的实现策略有s e r v l e t 前端策略和j s p 前 端策略。由于速度、维护性方面的原因,控制器一般用s e r v l e t 实现,即由s e r v l e t 提供用户的集中访问点,处理请求并控制导航。实现时,需要在页面中用 ,或用 指定,而且将i e 的默认主页也 改用此s e r v l e t 名作u r l 地址,并在部署用的x m l 文件中加入语句: s e r v l e t 名 ,并且将所有的j s p 文件放入w e b i n f 目 录的子目录下( 因为w e b i n f 目录下的文件只允许内部程序访问,而s e r v l e t 是 内部程序,恰好可以访问) 。系统设计中s e r v l e t 前端策略顺序图如图4 4 : 图4 - 4 系统设计中s e r v l e t 前端策略顺序图 由顺序图可以看出,饮食服务中心服务人员操纵客户端,控制器由s e r v l e t 的 扩展子类c e n t e r m a n a g e r 类担任,c e n t e r m a n a g e r 中包含了分发者模块d i s p a t c h e r 和助手类r e q u e s t h e l p e r ,视图是j s p 和h t m l 页面。系统设计中,s e r v l e t 前端策 略的关键代码如下: 星坠! 笔! 尘堡墨毡墨g 宝e p u b l i cc l a s sc e n t e r m a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桥梁养护知识培训信息课件
- 2025年初创公司技术团队负责人的面试指南与预测题集萃
- 2025年区域可持续发展战略研究试题及答案
- 2025年高新技术应用工程师备考策略与模拟题答案
- 2025年注册验船师资格考试(B级练习题)强化训练试题及答案一
- 后端服务面试题目及答案
- 2025年注册验船师资格考试(B级船舶检验专业基础安全)测试题及答案二
- 2025年注册验船师资格考试(B级船舶检验专业基础环境与人员保护)测试题及答案一
- 2025年篮球教师招聘试题及答案
- 国家银行考试题库及答案
- 血液透析护理质量指标评价标准
- TCAWAORG 014-2024 老年综合评估及干预技术应用规范
- 《新能源材料及器件组装》课程教学大纲
- 统编版(2025)七年级下册道德与法治1.3《学会自我保护》教案
- 孕产期保健知识
- 目标管理Smart原则培训课件
- GB/T 44927-2024知识管理体系要求
- 《红楼梦》(解析版)
- 2025年医院急诊科工作计划
- 达州电力集团笔试真题
- AAMIST79-2017卫生保健设施蒸汽灭菌和无菌保证综合指南
评论
0/150
提交评论