(计算机应用技术专业论文)模式驱动j2ee应用研究.pdf_第1页
(计算机应用技术专业论文)模式驱动j2ee应用研究.pdf_第2页
(计算机应用技术专业论文)模式驱动j2ee应用研究.pdf_第3页
(计算机应用技术专业论文)模式驱动j2ee应用研究.pdf_第4页
(计算机应用技术专业论文)模式驱动j2ee应用研究.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机应用技术专业论文)模式驱动j2ee应用研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京航空航天大学硕士学位论文 摘要 本文主要研究了模式驱动j 2 e e 应用的软件设计方法。首先介绍了设计模式和 j 2 e e 技术,然后对典型j 2 e e 、鼓计模式展开论述,对十这些设计模式,水文分析了它 们的产生背景、基本原理、适用场合、使用该模式带来的优点及需要注意的问题接 着论述j 2 e e 模式关系以及对该层应用模型改善,使开发者对使用j 2 e e 模式后系统整 体的架构有一个更为清晰的了解,接着重点论述了模式组合的重要性以及模式驱动的 软件设计方法,最后结合一个具体的应用来说明如何有效选择j 2 e e 模式并组合这些 模式以最人限度的完善系统,并且对该系统进行了性能测试,以说明使用j 2 e e 模式 前后系统性能的明显变化。 由于各个设计模式针对的问题不同,在解决问题的侧重点也不尽相同,而且设计 模式不是孤立存在的,相互之间存在非常复杂的关系,因此j 2 e e 开发人员如何在实 际项目中选择合适的搜计模式以及组合使用这些设计模式开发j 2 e e 应用是本文的研 究重点。 在j 2 e e 应用程序巾使用设计模式是一个令人激动的新领域,它为现有软件设计 模式增加了新元素。设计模式提供了可以提高j 2 e e 系统性能的川于j 2 e e 编程的可复 用方法,帮助j 2 e e 开发人员提高项目质量,缩短项目开发周期,并构建高效、安全 和可靠的基于j 2 e e 的应用系统。 关键词:设计模式,j 2 e e ,e j b ,m v c ,s b b 模式驱动2 e e 应用研究 a b s t r a c t t h i sp a p e rm a i n 1 ym a k e sr e s e a r c ho ft h ed e s i g nm e t h o do fj 2 e ea p p ii c a t i o n d r iv e r lb yp a t t e r n s f ir s t 。ili n t r o d u c e sd e s i g np a t t e r na n dj 2 e et e c h m ) l o g y 。 t h e ni td i s c u s s e s r e p r e s e n t a t i v ej 2 e ed e s i g np a t t e r n s f o rt h e s e p a t t e r n s ,t h i sp a p e ra n a l y z eb a c k g r o u n d o f a p p e a r a n c e 、b a s i ct h e o r y 、 a p p l i e a t i o ns c e n ea n da d v a n r a g e sv i au s i n gj 2 e ep a t t e r n s b u lw h e nu s i n gt h e s e p a t t e r n s ,t h e r e a r eaf e w p r o b l e r o sy o u m u s tt a k ea t t e n t i o nt o t h e ni t d i s c t l s s e sr e i a t i o n so ft h e s ep a t t e r n sa n di m p r o v e m e n to ft h e s ea p p i c a t i o n m o d e la f t e r u s i n gd e s i g np a t t e r n s _ h i c h m a d e d e v e l o p e r s h a v eac l e a r r e o r g a n i z a t i o nw i t hs y s t e mf r a m e w o r k i na d d i t i o n 1 ta l s od i s c u s s e st h e i m p o r t a n c eo fc o m b n a t i o no fd e s i g np a t t e r n sa n dt h ed e s i g nm e t h o do fj 2 e e a p p l i c a t i o nd r i y e nb yp a t t e r n s i nt h ee n d ,i na l l u s i o nt oac o n c r e t ej 2 e e a p p li c a t i o n 。ile x p l a i n si l o wt es e l e c ta p p r o p r i a t ep a t t e r n sa n dc o m b i l i et h e s e p a t t e r n se f f i c i e n t l yt oi m p r o v ea p p l i c a t i o ns y s t e mt om a x i m u m1 i m i t t h e ni t t e s t st i l e s y s t e mp e r f o r m a n c ei ne r d e r t oe x l ) l a i nt i l ed i s t i n c tc l l a n g ea f t e r u s i n gj 2 e ep a t t e r n s b e c a u s ee a c h p a t t e r n s o l v e sd if f e r e n tq u e s t i o na n dh a y ed if f e r e n t i n f e t e s ti nt h e s ep r o b l e m sa n de a c hp a t t e r nc a l ll i n te x i sl i n d e p e n d e u t l ya n d h a v ec o m p l e xr e l a t i o n s _ i t ho t h e rp a t t e r n s f o rj 2 e ed e v e i o p e r s ,h o wt os e l e e t a p p r o p r i a t ep a t t e r n sa n dc o m b i l i et h e s ep a t t e r n se f f i c i e n t l yi st i l ee m p h a s e s o rl h i s p a l ) e t i li sa l le x c il i n gr e a l mu s i n gd e s i g np a t t e r n st od e v e l o p 。1 2 e ea p p li c a t i o f l i ta d dn e we l e m e n ti ne xi s t i n gs o f t w a r ed e s i g np a t t e r n s d e s i g ni l a t t e r n sp r o v i d e t i l er e u s a b l es o i u t i o nt o i m i ) 1 e v e 1 2 e f , s y s t e m p e r l e l i b a l l c ea n di l e l p 1 2 e ed e v e l o p e l si m l ) r e v es y s t e mq u a lit y 、s l o i t e l l t h e p e r i o d 0 f d e v e i o p i n g a p r o j e c t 1 la l s o h e l p sd e v e l o p e r s c o n s t r u c t e r f i e i e n t 、s a ( ea n ds t a b i e 2 e es y s t e m k e yw o r d s :1 ) e s i g np a t t e r n j 2 e e ,e j b ,m v c s b b l l 水谢i 小入郧m 序叫:j p n 变们学化论文,足小人:n :导! l i | j 指挣l j 独讧进行叫f 究f :作所j d ( 褂 的成果。j 尊北j 折知l 。除艾i | i 凸绛北i 刿r 川 j 的内容外,小学化论史的砌f 究成果小包含任何他 人宁仃若作权的内窬。刘小论艾所涉及f 门研究1 :f 1 :做| l l 负献的j 他个人年集体,均u 仉丈 - l - 以l j 确方,弋l ,j i 叫。 小人授权幸! 柬j j f i j _ ! 航天人学玎j _ 以竹权你科送变论j c f l j 复印仆,允r i :论艾敞阅平借阅, n r 以将一学俯论业纳全f f | ;! 戈 i i :分内择编入“父数婀j ? _ i j ! ! i :愉索,可以果川影、缩【:i j 或j 他 娩;f ;q 手j 。i 童i 宋r f i 仑变:。 ( 仪绀彳的警似论文n 嘲f 崭盯 要j f j 本尔游f ;) 作当铃品:整监鱼一 ii j l i j :一砸豇五强一 南京航空航天大学硕士学位论文 第一章绪论 1 1 课题研究的背景 n t e r n e t 和w w w 为企业提供了构建信息化经济的坚实基础和平台,为了利用 i n t e r n e t 的优势,各种大小企业开发能够融入 n t e r n e t 的企业信息系统已成为一种 必然趋势。但开发这样的企业应用系统面i 临新的挑战,它不同于一般应用系统,不仅 要保留传统的信息系统的管理,而且要确保所有关键性的商务功能都能够进行计算机 管理,能够频繁更新信息和服务,以适应外界的变化。这就要求实现这些系统在更高 层次上集成,并增加对分散的数据源整合数据的能力,从而服务于特定的战略需要。 此外,在信息经济化的竞争环境里企业应用的响应时间在企业中的价值不可评估,因 此需要采用一些方法简单而有效地将这些应用程序集成到现有的企业信息系统中去。 所有这些因素都极大地影响了企业对竞争环境的响应能力,因而,构建企业级应用软 件要在考虑维护和发挥现有的商业系统价值的同时,分别从响应速度、开发效率、系 统集成和自由选择四个方面来迎接开发一个企业应用系统所面临的挑战,跟上信息经 济环境快速的竞争步伐。 1 2 e e 就是在这种背景下的产物。j 2 e e 的目标是定义一个功能标准,以帮助人们 适应这些挑战。j 2 e e 不只是一种语言,它是s u n 公司继j a v a 技术后义推出的一个更 高层次的全方位、多功能的企业应用开发环境。它包括了当今软件工业界许多最新、 最重要的软件技术。j 2 e e 平台包含有一整套的服务、应用程序接口和协议,是j a v a 技术的整体解决方案。j 2 e e 平台通过基于组件的应用程序模型大大简化了开发过程, 同时还支持分布式体系和多层次的应用开发。随着越来越多的第三方对j 2 e e 的支持 和标准认b e , 2 e eu 被j “泛用来- 丌发企n k 级应用软件、中问件技术和组件技术。” 1 2 课题研究的意义 随着服务规模的扩大经常要对底层代码进行修改,所以代码的可重川性、可维 护性、简洁性在开发q ,变的非常重要,所以利用已经被证实是高效的软件体系结构进 行软件重用,不仅减少开发工作量,而且为以后整个系统的维护和升级打下一个坚实 的基础。j 2 e e 设计模式被证明足一种提供复用层次的极好方法。 一个设计模式描述了一个被证实可行的方案。这些模式可以被重用,有良好的伸缩 性,而这些设计模式的优势将在设计j 2 e e 应用时得到体现。因此如何使用如何选择 合适的设计模式以及综合使用这些设计模式进行设计和开发以形成一个完美企业级 应用的解决方案具有很强的意义。 在1 2 e e 应用程序中使用设计模式是一个令人激动的新领域,它为现有软件设计模 式增加r 新元素。这些模式不是孤立存在的,所以必须构成较大且较复杂的框架。选 模式驱动j 2 e e 应用研究 择正确的设计模式和用模式解决实际问题是艰巨的工作,需要设计人员不断积累经 验。 1 3 课题研究思路 使用模式的时候,一般要考虑:在每个设计决定的代价利益分析中性能和可 伸缩性总是主要因素,另外必须确定某个设计模式针对你的体系结构的真实代价或利 益。因此本文论述r 使用该j 2 e e 模式带来的优势以及可能带来的一些问题。另外如 何组合使j j 。) 2 e e 模式也是本文的研究重点,最后本文阻一个实际应用说明如何设计 模式开发基于j 2 e e 架构的应用系统。 1 4 本文组织结构 本文分六章: 第一章:绪论。对全文的研究背景、研究意义、研究思路等作了说明。 第二章:介绍_ 设计模式的基本概念和描述方法,以及j 2 e e 平台概况、e j b 技 术、以及常见| 2 e e 设计模式。 第三章:围绕着项目巾常用的1 2 e e 模式展开论述,包括各种模式的产生、原理、 优势和缺陷、适用场合等。 第四章:主要论述了j 2 e e 模式闻的关系、模式对应用模型的改善以及模式驱动 软件设计方法。 第五章:主要征实际项日巾论述如何使用模式驱动的软件设汁方法开发基于 1 2 e e 的应用系统,以及分析使用j 2 e e 模式前后性能上的明显变化。 第六章:总结与展望 南京航空航天大学硕士学位论文 第二章设计模式与j 2 e e 平台 本章首先介绍了设计模式概念、描述,然后介绍了j 2 e e 技术,最后探讨丫设计 模式和j 2 e e 牛n 结合的思想。 2 1 设计模式概述 2 1 1 什么是设计模式 设计模式足对反复出现的设计问题的重复解决方案,是由一组描述如何实现软件 开发领域t t 特定任务的规则所组成,强调的是重用重复出现的结构设计十题,并给山 该问题的一个解决方案,找出并指定单个类、实例或组件级上的抽象。 一般而言,一个模式有四个基本要素: 1 模式名称一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 命名一个新的模式【j 1 此增加了设计的词汇。设计模式允许设计者在较高的抽象层次上 进行设计。基于一个模式词汇表,开发者自己以及同事之间就可以讨论模式并在编写 文档时使j 1 j 它们。模式名可以批助设计者思考,便于他们与其它人交流设计思想及设 计结果。找到恰当的模式名也是设计模式编日工作的难点之一。 2 问题描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后 果,它可能描述r 特定的设计n 题,如怎样用对象表示算法等。也可能描述了导致不 灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决 条件。 3 解决方案描述了设汁的组成成分,它们之间的相互关系及各自的职责和协作 方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个 特定而具体的设计或实现而是提供设计问题的抽象描述和怎样用一个具有一般意义 的元素组合( 类或对象组合) 来解决这个问题。 4 效小捕述j 模式m 川的效球及使川模式心权衡的m 题。爆锋“捕述i 筻计决策 时,j :斗i 总提到模式效果,m i 它们对于评价设计选择和理解使用模式的代价及好处具 有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。 因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性 或可移植性的影响,列山这些效果对理解和评价这些模式很有帮助。 2 1 2 设计模式的描述 意图:主要是叫答设计模式是做什么的攮本原理和意图足什么? 它解决的是什 么样的特定设计n 4 题。 动机:用以说明一个设计问题以及如何使用模式中的类、对象来解决该问题的特 定情景。给情景会帮助你理解随后对模式更抽象的描述。 模式驱动j 2 e e 应用研究 适用性:什么情况下使用该设计模式? 该模式可用来改进那些不良设计? 你怎样 识别这些情况。 结构:采用基于对象建模技术的表示法对模式中的类进行图形描述。也可以使用 交互图来说明对象之间的请求序列和协作关系。 参与者:指设计模式中的类或对象以及他们各自的职责。 协作:模式的参与者怎样协作以实现它们的职责。 效果:模式怎样支持它的目标? 使用模式的效果和所需做的权衡取含? 系统结构 的哪些方面可以独立改变。 相必模式:与这个模式紧密相关的模式有哪些? 其间重要的刁;同之处是什么? 这 个模式应与那些其他模式一起使剧? “1 2 2 j 2 e e 平台 2 2 ,1 j 2 e e 概述 1 ) j 2 队的技术优势 建立于j a v a 编程语言和j a v a 技术基础之上的1 2 e e j f 台是最适用j 二企_ k 级分布式环境的应用结构,它提供中间层集成框架用来满足无需太多费川l 面又需 要商可川性、商可靠性以及可扩展性的应用的需求。通过提供统一的丌发,f ,台,1 2 e i ; 降低了开发多层应川的费用和复杂性,同时提供对现有应j 书程序集成强有力支持,完 全支持e n t e r p r i s e a v a b e a n s ,有良好的向导支持打包和部署应用,添加目录支持, 增强了安全机制,提高r 性能。1 2 e e 优势主要体现在:保留遗留的1 1 应j | j 、商效的开 发、支持:钟构环境、可仲缩性、稳定的可用性。”“ 2 ) j 2 e e 体系结构 j 2 e e 使玎多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组4 ,l : 根据他们所在的层分布在1 i 同的机器上。j 2 e e 包含下面关键技术;j s p 、s e r v l e t 、 e j b 组什、j ( t v a 消息服务( j m s ) 、j d b c 和j a v a 命名与同录接u ( j n d l ) 。【l 十j 扑ji i 台足分层系统所以我们将j 2 f , i ;的层次模喇化,这个模碰使得我 们将职责逻辑地分到坷ij 司的层中,分别足运行在客户端机器j 二的客户端层、运 行在w e b 服务器j :的w e b 层、运行在e j b 服务器上的业务层和运行在e i s 服务器上 企业信息系统层,图2 1 即展示了j 2 e e 三层结构及卡h 关技术在j 2 f , e 系统结 构中的地位。n 鲥 3 ) 1 1 2 e e 应j 1 j 服务器 应, q l 1 1 4 务器足网络环境中应用程序的高层运行平台,使得应用系统的代码更为简 洁、开发更为方便。应用服务器被认为是继操作系统、数据库管理系统之后,随着计 算机网络环境的发展而出现的里程碑式的基础软件。 4 南京航窄航天大学硕士学位论文 为r 方便开发、部署、运行和管理基于多层结构的应用,需要以网络和分布式计 算的底层技术为基础,构建一个完整的应朋框架,提供相应的支撑平台作为多层应用 的基础设施,这一支撑平台的关键就是位于中间层的应用服务器。应用服务器足一个 创建、部署、运行、集成和维护多层分布式企业级应用的平台。如果应用服务器与 w e b 服务器相结合,或者包含了w e b 服务器的功能,则称之为w e b 应用服务器。 图2 1 2 e e 系统结构刚” 4 ) 1 2 e e :关技术 x m l ,一与j 2 e e 的理想结合 w e b 服务取决于备种因素,其t i 之一足在1 i 同的信息系统? l j 4 - :同的数獬格式情况 i 、的通信能力。x m i 。作为一种可移植的数敬标签语言,是满足这利t 需要的关键技术, x m i 。在松散耦合和紧耦合的企业集成的j :v f f l 门益增加,也正足闲为它的数据集成能 力,x m l 现已成为基于w e b 应j 钼的支柱之一。w e b 服务也依赖于企业使川小同、l ,台相 。l i 之问通信的能力,f f 十j 2 e e 技术使编码和平台是可移植的,这样,j 2 e e ,i 台自然 成为开发w e b 服务的最佳选择之一。加上新的用于x m l 的j 2 e e l ,i 的引入,使得这 利,选择更具有i 妓引力。x m i ,和j 2 e l :技术两者的可移植性和可伸缩性,使得它们成为 满足w e b 服务的理想技术。” 除了数据和代码的可移植性外,w e b 服务在彳i 断增长,特别需要可伸缩性、安全 性和有效性。1 2 f , e 平台恰恰足为了满足这些要求丽设计的,它使得开发w e b 服务最 困难的部分低层基础部分的程序设计变得容易了。这个基础部分包括的特征有安 全性、分布式事务管理、连接缓冲池管理等,所有这些都是w e b 服务的基础,并且由 模式驱动$ 2 e e 应用研究 于组1 ,l :足可重用的,开发时间也可以大大减少。 山于x m l 和j 2 e e 、i ,台可以有机地相互配合,它们已在w e b 服务t l 起着核心作用。 实际i ,用于x m l ,和j 2 e e 平台的j a v aa p 所带来的优点使它们成为部署w e b 服务 的理想结合。” j s p 与s e r v l e t s e r v l e t 足一种服务器端的技术,用来表示逻辑实现。它接受来自w e b 浏览器的 h 1 t p 请求信息,进行处理后返回 i t t p 响应信息。由j 二s e r v e t 是用j a v a 语言编写 的,可移植性较强,可以从一个平台移植到另一个平台。 j s p 技术提供与s e r v l e t 相同的功能,但是开发起来比s e r v l e l 要简便。3 s p 可 以帮助w e b 开发者使用相对较少的代码创建动态的网页。j s p 的优点足它的简洁性, w e b 设汁者即使不懂得编程,也可以使用3 s p 创建动态的网页。 j s p 是l r r m l 代码和j a v a 代码的混合。当第一次请求一个j s p 页而时,应用服务 器需要先把该j s p 贞呵编译为一个s e r v l e t 为请求提供服务。在客,、请求j s p 页面 的时候,服务器就会处理j a v a 代码,然后返回t m l 页面给浏览器。”1 j n d j n i ) l 即1 a v a 的命名和口录接u 。j n i ) i 足j a v a 定义的一种标准的注册机制提 供名_ 宁和f 1 录服务。礼j 2 e i :应用f f i ,j n d i 用于管理应 | j 中用到的核心组件和对象。 当需要使j j 某一个组什时,j n i ) i 可以提供查找该组什的方法。 j n d i 提供了一组 p lj j 来访问命名和目录服务。它提供一个相容的模式访i , i l $ 1 1 操作企j i k 犬范围的资源,例如一个应用服务器巾的i ) n s 、l d a p 、本地文件系统或者对 象。 命名服务足一种应川程序,该程序包含一个对象集合或对缘引用的集合还对每 个对象笑联r 一个对刚、友好的名称。日录服务只足命名服务提供的一个扩展功能。 r m i | m l | i 远私力泓i 州川。l m l 足j a v a1 4 j i j 柙序访n d 远程1 a v a 对象的一种标准。利 用r m i ,1 a v a 应川程序可以访问位于其它进程或者其它计算机i :的对象。对于应用程 序来说,i m i 使得远程对象如同本地对象一样。 j m s j m s ( 】a v a 消息服务) 提供了一组标准的j a v a j j i 。j i j 十企业级消息处理。通过 3 m s 可以在j a v a 程序之删发送和接受消息。j m s 提供两种消息处理方式:队列模型与 基于主题的发布订阅模式。队列模型是将3 m s 消息放到3 m s 队列中,然后接受方到 j m s 队列r f l 去取消息。发布订阅模式是将某一主题的j m s 消息发给该主题的所有订 阅者。“。 6 南京航空航天大学硕士学位论文 j a v am a i l j a v am a i1a i j i 为开发人员通过使用各种邮件传输掷议编写邮件客户机提供接口 和抽象类。 2 2 2e j b 技术 1 ) e i b 的概念 j 2 e f 巾的一个引人注目的技术就是e j b ,它提供了一个架构开发和配置到客户端 的分布式逻辑,因此可以明显减少开发扩展性高度复杂的企业应用的难度。e j b 规范 定义了e j b 组件应该如何及时与她们的容器交互。由e j b 容器负责提供普通的服务, 例如目录服务、事务服务、安全、资源池和容错。 e j b 技术定义了一组可重用的组件:e n t e r p r i s eb e a n s 。你可以利用这些组件, 象搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合 到特定的文件中去。每个文件有一个或多个e n t e r p r i s eb e a n s ,在加上一些配置参 数。最后,这些e n t e r p r i s eb e a n s 被配置到一个装丁e j b 容器的平台上。客户能够 通过这些b e a n s 的h o l n e 接u ,定化到柴个b e a n s ,j f :产生这个b e a n s 的一个实例。 这样,客户就6 够调j i jb e a n s 的应j j 方法和远程接u 。e j b 服务器作为容器年低层,r 台的桥梁管理着e j b 容器和函数。它向e j b 容器提供了访问系统服务的能力。例如: 数据库的管理和事务的管理,或者对于其它的e n t e r p r i s e 的应用服务器。所有的e j b 实例都运行往f j b 容器i l 。容器提供r 系统级的服务。控制了e j b 的生命岗期。 e n l j e r p r i s eb e a n s 的开发者不需要应用逻辑考虑进来。”1 2 ) n ) b 分类 会话b e a n 会话b e a n 在j 2 e e 应_ f l j 程序中被用来完成一些服务器端的业务操作,例如访问数据 库、调其他i ;j b 组1 , :。在一个基于1 2 e e 规范的电子商务系统巾会话b e a n 可以充当 以下角色:计价器、t 高, q l 】卡验证器、商品搜索引擎。总之,会话b e a n 代表的足动作。 会话b e a n 又分为两类:有状态会话b e a n 莉l 无状态会话b e a n 。一二前的l 别在f 足否 保存客户端的状态信息。 实体b e a n 实体b e a n 代表持久保存的数拥,典型的是存储在数据库巾的数据冈此扑胡臣务器 端崩溃后数据仍然存在。多个铎,o 端可以使朋e j b 表示同样的数据。例如在一个 乜了 商务系统中,实体b e a n 可能被用来代表产品、雇员、信用卡、定单等数据对象。 消息驱动b e a n 结合丫会话b e a n 和j m s 的消息监听器的特性,允许一个业务层组件异步接受j 鸺 消息。 7 模式驱动j 2 e e 应用研究 2 3 j 2 e e 模式 很难找到某个j 2 e e ,r 发人员h i 主动将设计模式当作他们标准工具集的一部分, 或者足j l = - t 分熟悉设计模式的用途和应用。实际卜设计模式本身就是j 2 e e 的一个隐 含部分。设计模式足一个可重用的解决方案,针对的是许多软件开发人员在我们之前 已经多次遇到并解决的一再出现的软件设计问题。大多数软件设计问题都有多个候选 解决方案,f 是随着时间和经验的校验,只有少数解决方案成为最佳选择。设计模式 以- - 矛1 通用的方式表示并传播1 2 e e 的那些“最佳选择”,开发人员能够应用来解决 j 2 e e 应用中遇到的问题。 j 2 e es i i - 台使大量玎i 同的技术标准化,从而提供了一个强壮的平台来建立分布式 多层氽业类应j 】,而对j 2 e es r 台和技术的亲身实践总结出来的一些设计模式被成为 j 2 e e 模式。在用设计模式实现j 2 e e 应用时有两个指导原则:在每个设计决定的代价 n 益分析中,性能和可伸缩性总是主要因素。这只是“企业类”应用程序开发人员 的一个生活现实;必须将性能测试作为个工具,确定某个设计模式针对你的体系结 构的真实代价戏利益。 j 2 1 , ;e 模式一般归! 为:表示层模式、i k 务层模式、集成层模式。表示层模式包含 js e r v l e l 平j s t ,技术相关的模式。h k 务层模式包含与f i b 技术干笑的模式。集成层 模式包含与j m s 和i d b c 有关的模式。“1 下而一章将对典型的j 2 e e 模式展开论述。 b 南京航空航天大学硕士学位论文 第三章j 2 e e 设计模式 上一荸介绍了设计模式的基本知识,j 2 e e 技术以及两者的关系,本章将对在j 2 e e 系统开发i i 】用到的典型的设计模式展开论述。 3 1 m v c 设计模式 3 1 1 啊v c 模式的基本概念 m v c 设计模式是为那些需要为同样的数据提供多个视图的应用程序丽设计的, 它很好地 i 警| 3 1m v c 框架结构图 在m v c 模型l i | 有三科对象: 模型( m o d e l ) 负责维护数据j :提供数掘访0 日方法。模型必柯纯粹的功能性接 口,也就足一系列的公开方法。通过这些公开方法,可以取得模型的所有功能。在这 些公开方法i j l ,存些是取值方法,让系统其他部分可以得到模型的内部数据,还有一 些改值方法用于修改模型的数据。“1 视图( v i e w ) 川来显示模型的数据。在一个m v c 模型中可以有多个视图。这一 点很好理解,例如在e x c e l i ,同一部分数据可以j f j 饼形罔、赢方图等多种统计图表 表示,当j j ,o 修改数拥:时,所有的视图都会按照新数据更新自己。j a v a 语言的s w i i | g 和a l 组什均可以川束构造视图,f 【j 是必须实现j a v a u l “0 b 8 e r v e t 接u ( 应川 0 b s e r v o r 改汁模式) ,这样才能保证视闭门动更新。 控制器( c o n t r o i l e r ) i l l ,可以通过视图改变模型的状态,这利史新足j j 亘过控 制器完成的。控制器负责调川模型的改值方法以改变模型的状态,同时,控制器会通 知所有已登址视图刷新数据显示。 m v c 设计模式足一种尺度较人的设汁模式,它通常包括r 合成模式、策略模,、 观察者模式。 3 1 2m v c 模式适用场合 m v c 结构适用于那些多用户的、可扩展的、可维护的、具有很高交互性的系统。 m v c 很好地表达用户的交互和系统模式。 很方便地用多个视图显示多套数据,使系统很方便地支持其他新的客户端类型。 9 模式驱动j 2 e e 应用研究 代码重复达到最低。 由于分离了模式中的控制和数据表现,可以分清开发者的责任,另外也可以加 快产品推向市场的时问。1 。 3 2 工厂模式 工厂模式在j 2 e e 系统中有着广泛的运用,例如e j b 、r b l i 、c o r b a 、s w i n g 中都 有广泛的运用。 3 2 1 工厂模式基本原理 一个简单工厂模式根据提供的数据返回类的实例,此类是多个可能的类中的一 个。通常它返回的类都具有共同的父类和共同的方法,但是每个类执行的任务各不相 同,并且针对不同类型的数据进行了优化。 蒜爿兰卜至池 i i3 2 ,1 :厂模式原理 在图3 2 中,x 是基类,x y 和x z 继承了x 类。而工厂类能够根据程序传递给它 的数据决定生成那一个子类的实例。在右边定义了一个g e t c l a s s 方法该方法需要 参数a 并返回一个x 类的实例。对于程序员来说,返回的究竟是x y 还是x z 的实例并 不重要,因为它们有相同的方法,只不过这些方法的内部实现不同。“1 p u b li c c l a s sf a c t o r y p u b l i cs t a t i cs a m p l ec r e a t o r ( i n tw h i c h ) i f ( w h i c h = = 1 ) r e t u r nn e ws a m p l e a 0 : e l s ei f ( w h i c h = :2 ) r e t u r nn e ws a m p l e b 0 : ) 其c p 工厂模式中有更精巧的两种模式:工厂方法模式和抽象工厂模式。 3 2 2 工厂方法模式 1 ) 基本工作原理 工厂方法模式足一种更灵活的模式,它扩展了子类实例化思想,即不在由单个工 厂类决定到底应该实例化哪个子类。而超类将这一决定推迟到每一个子类中完成。这 种模式实际上不存在直接选择某个子类( 而非其他子类) 的决策点。使用这种模式编 i o 南京航空航天大学硕士学位论文 写的程序定义了一个抽象类,虽然它负责创建对象,但是应该创建哪个对象将由各个 子类来决定。一般通过定义一个用于创建对象的接口,让予类决定实例化哪一个类。 2 ) 工厂方池模式结构 p r o d u c t :定义t 厂方法所创建的对象的接u c o n c r e t e p r o d u c t :实现p r o d u c t 接口 c r e a t o r :声明下厂方法,该方法返回一个p r o d u c t 类型的对象。c r e a t o r 也可 以定义一个工厂方法缺省实现,它返回一个缺省的c o n c r e t e p r o d u c t 对象。可以调用 工厂方法创建一个p r o d u c t 对象。 c o n c r e t e c r e a t o r :重定义t 厂方法以返回一个c o n c r e t e p r o d u c t 实例。各个 部分灭系如图3 3 0 f ? a cl ) r y m e “o d ( ) h n o p e r a t i o n ( 尸 p r o d u ct = l ? a ct o r y m et h o d ( ) f e l u f iu e w c o n c r e t e p r o d u c t 图:i 3 工厂方法模式中各个部分的关系 c r e a l o t 依赖于它的了类柬定义1 二厂方法,所以它返叫一个适当的 c o n c r ( ,t ej ) r o d u c t 实例。“1 工一方法模式有卜而3 种形式: 基类足抽象类,并且这种模式必须返回一个完全可工作的类。 基类t i 包含默认方法,并f 1 只冉当默认的方法小够j f j 时,才需要派生了炎。 传递给工厂的参数将通知要返回哪些类类型。在这种情况f ,所有的类必颁仃棚 同的方法名,任l 是每个方法可完成完全h i 同的操作。 3 ) 使川t 厂方法模式应注意: 通过对该模式的深入分析我们发现t 厂方法的一个潜在缺点在于客广1 可能仅仪 为了创建一个特定的c o n c r e t e p r o d u c t 对象,就不得不创建c r e a t o r 的子类。“1 凶此 工厂方法模式不能滥j 玎,在以卜- 情况发生时可以考虑使用工厂方法模式: 类无法预计出必须创建哪个类对象。 类要使j 1 】其子类指定所要创建的对象。 模式驱动j 2 e e 应用研究 对于将创建哪个类,希望将有关信息局部化。” 3 2 3 抽象工厂模式 1 ) 基本原理 抽象工厂模式( a b s t r a c tf a c t o r y ) 模式是比工厂方法模式更抽象的种模式。使 j f j 这种模式能返倒多个相关类中的一个,而每个对象类又能根据要求返回多个h i 同的 对象。换句话说,抽象工厂是一个能从儿组类中返回其中某一组的工厂对象。还可以 使用工厂方法束确定从该组类巾最终返回哪个类。该模式提供一个创建一系列相关或 相旺依赖对象的接口,i l i 无需指定他们具体的类。例如: p u b li ca b s t r a c tc l a s sf a c t o r yl p u b li ca b s t r a c ts a m p l ec r e a t o r 0 : p u b l i ca b s t r a c ts a m p | e 2c r e a t o r ( s t r i n gn a m e ) : p u b i cc l a s ss i m p l e f a c t o r ye x t e n d sf a c t o r y f i ) u b l i cs a n , p i ce 1 e a t o r 0f 1 2 p u b li cs a m p i e 2c r e a t o r ( s t r i a gn a m e ) r e t u r ni l e w s a p 1e 2 a p u b l j cc l a s sb e m b l ? a c t o r ye x t e n d sf a c t o r y p u b li cs a m p l ec r e a t o r 0f r e t u r l ! n e ws a m p l c b p u b li :s a , p i c 2c r c a t f j r ( sl r i n gl l i f l l e ) r et u r n i c ws a m p le 2 b 南京航空航天人学硕士学位论文 2 ) 结构 a b s t r a c t f a c t o r y :声明一个创建抽象产品对象的操作接口。 c o n c r e t e f a c t o r y :实现创建具体产品对象的操作。 a b s t r a c t p r o d u c t :为一类产品对象声明一个接口。 c o n c r e t e p r o d u c t :定义一个将被相应的具体工厂创建的产品对象。实现 a b s t r a c t 接口。 c i l e n t :仅使用由a b s t r a c t f a c t o r y 和a b s t r a c t p r o d u c t 类声明的接口。 通常在运行时刻刨建一个c o n c r e t e f a c t o r y 类的实例。这一具体的工厂创建具 有特定实现的产品对象。为创建不同的产品对象,客户应使用不同的具体工厂。 a b s t r a c l f a c t o r y 将产品对象的创建延迟到它的c o n c r e t e f a c t o r y 子类。抽象工厂模 式结构如图3 4 。 !o 岖五亍面 圈3 4 抽象i :厂模式结构图 3 ) 使用抽象工厂模式的注意事项 通过对抽象工厂模式的分析,使用该模式概括起来有以一f j l 个优点: 它分离了具体的类 抽织工厂模式帮助你控制一个应用创建的对象的类。因 为一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离。客户通过它 们抽象接口操作实例。产品的类名也在具体工厂的实现中被分离;它们不出现客户代 码巾。 它使得易于交换产品系列。一个具体工厂类在一个应用中仅在它初始化的时 候出现一次,这使得改变一个应用的具体工厂变的容易。它只需改变具体的工厂即可 使用不同的产品配置。这是因为一个具体的抽象工厂创建了一个完整的产品系列,所 以整个产品系列会立刻改变。 模式驱动j 2 e e 应用研究 佬有利于产。1 1 7 l 的一致性当一个系列中的产品对象被设计成一起工作时,一 个应j 1 3 一次只能使j j 同一个系列l ;1 1 的对象。 但抽象工厂模式要增加额外类设计,故该模式不能滥用,在下面情况下可考 虑使用抽象丁厂模式: 一个系统要独立于它的产晶的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 ! _ 你强调一系列棚关的产;6 对象的设计以便进行联合使用时候。 “你提供一个产f 铺类库,而只想显示它们的接口丽f i 是实现时。 另外通过对抽象工厂模式的深入分析,尽管抽象工厂模式生成的所有类都有相同 的基类,但是小可避免地,某些子类会有与其它类不同的额外方法。在任何予类中也 都会f f 现同样的问题。也就是说,你无法确定是否能调用某个类方法,除非知道这个 了类足否支持这些方法。针对这个问题有两利t 解决方法。可以在基类中定义所有的方 法,如果兀法修改基类,也可以派生一个新的基类,使之包含所需的全部方法。 3 3 数据访问对象模式 3 3 1 数据访问对象模式的产生 存开发j 2 应用会出现下述情况: 1 ) 许多j 2 e e 应用程序需要在一定程度上使用持久性数据。诸如b e a n 管理的实 体b e a n 、会话b e a n 、s e r v l e t 等组件往往需要从持久性存储数据源中检索数据,以 及进行数据存储等操作。 2 ) 根扶 产 供应商的小i 司,持久性存储a p i 差别也很大,这些 i l 和其能力同 样根搦存储的类型不同也有差别,这样存在以卜缺点,即访问这些独讧系统的a l ,i 很不统一。另外资料档案库或是数据存储机制的差别非常人。许多系统的数据维护 在大型机、关系数据库管理系统、面向对象的数据库管理系统、i d a | ,仓库、普通的 文件等设备或系统r 1 。 :j ) 庸川程序使川蛮体h e a l l 的分布武组什来表示持久性数据,或青使f j 1 1 ) b c i ) l 来访n h 驻留在桀关系数据库管理系统r l l 的数据,这些组 ,l = 中包含连接性和数据访 n q 代码会0 i 入这些约1 什与数捌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论