




已阅读5页,还剩51页未读, 继续免费阅读
(计算机应用技术专业论文)设计模式在基于j2ee系统中的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔演l 挣大学硕士中付论文 摘要 i n t e r n e t 已经成为当今信息产业重要应用之一,它的关键技术分布式 系统也得到了迅速发展。j 2 e e 是由s u n 公司主持推出的一项中间件体系结 构,它定义了一个利用j a v a2 技术来简化诸多与多级企业解决方案的开发、 部署和管理相关的复杂问题的平台。为了推广j 2 e e 的应用,相关机构整合 现有的设计模式,建立了j 2 e e 设计模式,帮助设计人员迅速掌握j 2 e e 应用 的设计方法,提高工作效率。 微架构是一些设计模式的有机组合,它解决的是设计模式之间的相互操 作关系。只有在微架构的组织下设计模式才能互相配合,充分发挥各自的功 能。 本文首先分析了在应用设计模式设计中小规模w e b 应用系统时遇到的 问题,即没有针对中小规模w e b 应用系统的设计模式组合( 微架构) ,设计 模式只是独立地完成某些功能,无法确定模式对象之间相互作用的关系;然 后从研究j 2 e e 设计模式出发,提出新的中小规模w e b 应用微架构来解决问 题。 。 论文研究了中小规模w e b 应用所需的软件结构层次,经过分析选择了 j 2 e e 开发平台,经过对j 2 e e 提供的设计模式的研究提出了m a m s w a 微架 构。m a m s w a 包括截取过滤器模式、前端控制器模式、业务代表模式、值 对象模式、会话面等模式。m a m s w a 微架构相对于已有架构的特点是:适 当考虑了应用的复杂性和可操作性,既保证了应用程序的安全性又使程序在 高效的条件下运行,可以作为其它系统设计人员和程序员的有效参考。 最后将m a m s w a 应用于黑龙江科技学院会议信息管理系统的开发, 验证了该微架构的正确性。 关键词:软件构架;软件重用;w e b 应慝:j 2 e e 设计模式 哈尔滨r 程大学硕士学付论文 a b s t r a c t i n t e r a c th a sa k e a d yb e e nb e c o m i n go n eo ft h em a i na p p l i c a t i o n si ni t , t h e p i v o t a lt e c h n o l o g yo f i n t e r n e ti s p r o g r a s s e d f a s t j 2 e ei sam i d d l e w a r e a r c h i t e c t u r er e l e a s e db ys u nm i c r o s y s t e mi n c ,w h i c hi sap l a t f o r mu s i n gu n i f o r m s t a n d a r da n dt e c h n o l o g yo nt h i sp l a t f o r m i no r d e rt oe x t e n dt h ej 2 e ea p p l i c a t i o n , s o m ei n s t i t u t i o na n ds p e c i a l i s t sc o l l e c ts o m ej 2 e ec o r ep a t t e r n s ,w h i c hp r o v i d e t h eb e s ts t r a t e g ya n ds o l u t i o ni nj 2 e ed e v e l o p i n g m i c r oa r c h i t e c t u r ei sac o m b i n a t i o no fas e to fd e s i g np a t t e r n o n l yw i t ht h e m i c r oa r c h i t e c t u r et h ed e s i g np a t t e r n sc a l lp l a yt h e i rb e s tf u n c t i o n t h i st h e s i sf o u n dt h ek e yp r o b l e m sw h e nd e s i g nam i d d l e & s m a l ls c a l ew e b a p p l i c a t i o n s ,t h a ti st h e r e sn oc o m b i n a t i o no fd e s i g np a t t e r n s ( m i c r o a r c h i t e c t u r e ) f i tt ot h es i t u a t i o n ,d e s i g np a t t e r n so n l ys t a n da l o n e ,a n dn od e s c r i p t i o no ft h e r e l a t i o n s h i po fd e s i g np a t t e r n s a f t e rr e s e a r c ho fj 2 e ed e s i g np a t t e r n sp r e s e n ta n e w 7m i c r oa r c h i t e c t u r et os o l v et h ep r o b l e m i tw a sr e s e a r c h e dt h a tw h i c hk i n do fs o f t w a r el a y e r sw e r en e e d e dw h e n d e s i g nam i d d l e & s m a l ls c a l ew e ba p p l i c a t i o n s j 2 e ed e v e l o p m e n tp l a t f o r mw a s c h o o s e na f t e ra n a l y s i s w i t ht h er e s e a r c ho fj 2 e ec o r ed e s i g n p a t t e r n s t h e s a m s w aw a sp r o d u c e dw h i c hc o n s i s to fi n t e r c e p t i n gf i l t e r , f r o n tc o n t r o l l e r , b u s i n e s sd e l e g a t e ,v a l u eo b j e c t ,s e s s i o nf a q a d ee t c t h ef e a t u r e so fs a m s w a i si tt a k e sa c c o u n to ft h ec o m p l e x i t ya n dm a n e u v e m b 订i t y , i te n s u r et h e a p p l i c a t i o n ss e c u r i t ya n dl e ti t r u na th i 曲e f f i c i e n c y s a m s w ac a nb eag o o d h e l p e rf o ro t h e r w e ba p p l i c a t i o nd e s i g n e r a tl a s ts a m s w aw a su s e di nt h ed e s i g no f “m e e t i n gi n f o r m a t i o ns y s t e mo f h e i l o n g j i a n g i n s t i t u t ea n d t e c h n o l o g y ”,i tw a sp r o v e d t h a tt h e w a yt h a t s a m s w aw o r k si sc o n r e c t k e y w o r d s :s o f t w a r ea r c h i t e c t u r e ,s o f t w a r er e u s e ,w e ba p p l i c a t i o n ,j 2 e ed e s i g n p a t t e r n 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的 指导下,由作者本人独立完成的。有关观点、方法、 数据和文献的引用已在文中指出,并与参考文献相对 应。除文中已注明引用的内容外,本论文不包含任何 其他个人或集体已经公开发表的作品成果。对本文的 研究做出重要贡献的个人和集体,均已在文中以明确 方式标明。本人完全意识到本声明的法律结果由本人 承担。 作者( - 签- v - ) :翌丕坚丝 日期:研年,月,。日 哈尔滨t 程大学砂十学位论文 1 1 课题目的和意义 第1 章绪论 从世界上第一个w e b 浏览器诞生至今,i n t e r n e t 的发展经历了w e b 的广 泛流行及应用、i n t r a n e t 的流行到发展这样几个时期。在未来几年,我国i n t r a n e t 的发展处于关键地位。i n t r a n e t 已由开始纯粹的信息发布向内容丰富的协作、 交流、商务等功能发展。 j 2 e e 是目前广泛应用的一种i n t r a n e t 开发平台。它一种利用j a v a 2 平台 来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。j 2 e e 技术的基础就是核心j a v a 平台或j a v a2 平台的标准版,j 2 e e 不仅巩固了标 准版中的许多优点,例如”编写一次、随处运行”的特性、方便存取数据库的 j d b ca p i 、c o r b a 技术以及能够在i n t e r n e t 应用中保护数据的安全模式等 等,同时还提供了对e j b ( e n t e r p r i s ej a v a b e a n s ) 、j a v as e r v l e t s a p i 、j s p ( j a v a s e r v e rp a g e s ) 以及x m l 技术的全面支持。其最终目的就是成为一个能够使 企业开发者大幅缩短投放市场时间的体系结构。 j 2 e e 体系结构提供中间层集成框架用来满足无需太多费用而又需要高 可用性、高可靠性以及可扩展性应用的需求。通过提供统一的升发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力 支持,完全支持e n t e r p r i s ej a v a b e a n s ,有良好的向导支持打包和部署应用, 添加目录支持,增强了安全机制,提高了性能。 为了使用户更好地利用j 2 e e 的组件快速安全、高效的应用程序,s u n 的工作人员在以前设计栌式的基础上开发出了j 2 e e 核心设计模式。开发设 计模式是解决软件重用问题的一种技术,通过运黾设计模式能使应用系统的 开发不再采用一切“从零1 于始”的模式而是以已有的工作为基础,充分利 胃过去应用系统开发中积累的知识和经验,充分地利用已有的开发成果,消 除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件 开发的效率,同时,通过重用高质量的己有开发成果,避免了重新开发可能 ;i 入的错误,从而提高了软件的质量。设计模式的核心思想是总结和积累前 哈尔滨 = 平u ,:学硕士学位沦文 人在软件开发过程中成功的设计经验,通过对这些经验的学习使得人们在面 对新的软件设计问题时不用一切都从头开始,而是尽量套用己有的模式以提 高软件的生产效率。 微架构是一个新概念,它是一组被同时使用的模式,用于实现系统中的 一个特定部分或一个特定的子系统。微架构常用来解决粗粒度、高层面的问 题。微架构是由相互关联的模式组成的网络;自此形成一种现成的解决方案, 用于解决一个粒度更大的问题。它不再着重于某种设计模式的使用而足考查 多种应用于一个系统中的各种设计模式的相互通信和作用,所以比设计模式 的抽象度再高,从而软件重用的级别更高,达到软件重用更好的效果。 通过研究j 2 e e 核心设计模式,针对特定的应用环境提出新的微架构使 系统设计过程达到软件重用的目的,在保证系统安全性的前提下,根据系统 特点去掉不必要的模式,提高系统的易用性、灵活性,并提高系统的运行率, 是微架构发展的必然方向。 1 2 国内外研究现状及进展 设计模式是软件重用的个方面,它是抽象程度较高的重用方法。软件 重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素 的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分 析文档甚至领域缸识。对于新的软件开发项目而言,它们或者是构成整个目 标软件系统的部件或者在软件开发过程中发挥某种作用。通常将这些软件 元素称为软部件。 为了能够在软件开发过程中重用现有的软部件,必须在此之前不断的进 行软部件的积累,并将它们组织成软部件库。这就是说,软件重用不仅要讨 论如何检索所需的软部件以及如何对它们进行必要的修剪,还要解决如何选 取软部件、如何组织软部件库等问题。因此,软件重用方法学通常要求软件 开发项目既要考虑重用已有软部件的机制,又要系统的考虑生产可重用软部 件的机制。这类项目通常被称为软件重用项目。 1 2 1 软件重用标准 目前经常采用的软件重用标准有:i e e e l 5 1 7 - 1 9 9 9 重用过程标准、 哈尔滨1 = 稃人学硕七学位论文 i e e e 压队1 2 2 0 7 0 - 1 9 9 6 软件生命周期过程标准。 i e e e l 5 1 7 1 9 9 9 重用过程标准提供了软件生命周期中包括的过程、活动 和任务需求规约,以支持系统级软件重用的实践。它还包括了公共软件复用 术语的定义。该标准的用户包括资产的提供者和开发者,以及那些利用资产 开发软件系统及应用的开发者与消费者。 i e e e e i a l 2 2 0 7 0 1 9 9 6 软件生命周期过程标准提供了软件生命周期中必 须包含的过程、活动和任务的最小集的需求规约。过程被组织在软件生命周 期框架中。该标准还包括软件生命周期术语的定义。该标准的用户包括软件 系统及应用的供应者、开发者、用户和客户。 1 2 2 设计模式的研究 在2 0 世纪7 0 年代后期,一个叫c h r i s t o p h e ra l e x a n d e r 的建筑师在建筑 模式领域开展了现在所知最早的一项工作。有次在试图发现和描绘一些高 质量建筑设计的完整性和其中体现的艺术活动时,a l e x a n d e r 和他的同事们研 究了为解决同一个问题而设计出的不同建筑结构,他发现了那些高质量的设 计中的* t l t p 3 , 性。于是他在出版的书藉中使用“模式”这个术语束指代这种相 似性。他出版的书藉为一种模式语言:城市、建筑业与建筑物( 牛津大学 出版社1 9 7 7 年) 、永久的建筑风格( 牛津大学出版字土1 9 7 9 年) 。 1 9 8 7 年,受a l e x a n d e r 作品的影向,那时,w a r dc u n n i n g h a m 和k e n tb e c k 把建筑警上的模式观点应用于软件的设计和开发。他们利用a l e x a n d e r 的一 些观点开发了一系列模式,利用s m a l l t a l k 语言实现了雅致的用户界面。利用 这个工作成果,他们在1 9 8 7 年召开的面向对象的编程系统、语言和应用程序 ( o o p s l a ) 研讨会上做了一个以在面向对象编程中使用模式语言为题 的演讲。从那以后,面向对象钡域中的许多名人发表了很多与模式相关的论 文和演讲。 1 9 9 4 年,由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 o h n v l i s s i d e s ( 2 i j 所谓的“四人组”,g o f :g a n go ff o u r ) 合作的以设计模式: 可复用的面向对象软件的基本原理为题目的书藉出版了。这本书解释了模 式的用处同时也使得设计模式得到广泛普及。在书中,作者们记录了他们 近4 年半的工作中发现的2 3 个模式“r 。 哈尔滨工程大学硕十学位论文 目前,设训模式已成为软件设计遵循的标准和重要原则。 2 ,3j 2 e e 设计模式及微架构 j 2 e e 是种用来开发分布式企业软件应用系统的平台。j a v a 语言从创生 之日起,就获得了广泛接纳,经历了巨大的发展。越来越多的技术都成了j a v a 平台的一部分,为了适应不同的需要也开发出了很多全新的a p i 和标准。最 终s u n 公司联合了多家业界巨头,在开放的j a v a 社区组织名义下,把所有与 企业开发相关的标准、a p i 整合起来,构成了j 2 e e 平台。 s u nj a v a 中心的架构师们在与来自全球的客户一起合作,致力于成功地 设计、规划、构建、部署各种不同娄型的基于j a v a 和j 2 e e 的系统。目前已 经有大量已验证有效的设计和构架,将这些设计经验固化下来并加以总结就 形成了j 2 e e 设计模式,并于2 0 0 1 年3 月首次公布。j 2 e e 模式提供了一组基 于j 2 e e 平台的常见问题的解决方案,使用这些模式可以提高系统的可扩展 性、可用性、性能、安全性、可靠性和灵活性n t 。 一 “微架构”最早是周来描述微处理器结构的术语。j 2 e e 平台借用它来描 述设计模式的组合运用。“微”的含义是指“微架构”使用的设计模式只是 j 2 e e 平台所创建的所有设计模式中的某些部分,它是用来设计一个系统的部 分功能或基于j 2 e e 平台提供的某种应用。 1 3 论文的主要工作 关于g o f 的设计模式及j 2 e e 的设计模式已经有很多文献可供人们参考, 也有一些文献描述如何在各种语言环境下实现这些设计模式。但在这么多可 供选择的模式中哪些是适合于w e b 应用程序开发的并不明确,而且在任何地 方都使用设计模式反而使哿程序结构复杂、降低工作效率。所以本文所做的 主要工作足在研究相关技术的前提下提出适合中小规模w e b 应用程序开发 的微架构,为以后的工作提供参考。具体来说本论文的主要工作是: 1 ) 研究软件开发所面临的问题,分析可行的解决方案; 2 ) 研究设计模式的基本理论,分析适用于j 2 e e 的设计模式,分析其适 用的环境及实施的过程。从中选择适台于w e b 应用的设计模式; 4 哈尔滨t 稗j :学硕十学位论文 3 ) 在研究j 2 e e 设计模式基础上,针对w e b 应用在分布式条件下对安全 性、灵活性、易用性、高效性要求的特点,不同设计模式应用的环境进行综 合应用r 提出一个适合中小规模w e b 开发的微架构; 4 ) 应用提出的微架构设计黑龙江科技学院会议信息管理系统,并进 行实施加以验证。 1 4 论文的组织结构 本论文共分为四章。第1 章为绪论,介绍了本课题的研究目的和意义及 本课题目前国内外的研究动态,说明在面临软件危机的情况下使用设计模式 来解决软件工程问题,并提出j 2 e e 设计模式是目前广泛采用的技术,微架 构是对设计模式综合运用的方向。第2 章进行设计模式理论研究,分析了设 计模式的起源、基本概念、如何描述设计模式、设计模式的分类、设计模式 的作用,最后研究g o f 设计模式的主要模式及设计模式与微架构的关系。第 3 章提出m a m s w a 微架构。首先提出在应用设计模式时遇到的问题,即没 有针对中小规模w e b 应用系统的微架构,设计模式只是独立地完成某些功 能,无法确定模式对象之闻相互作用的关系:为此分析了二层结构与三层、 多层结构的特点,得出中小规模的w e b 应用系统应为多层结构;然后指出在 多层结构中广泛采用的j 2 e e 技术及其主要构件及各种构件对应的实际技术; 最后从系统要实现的功能出发提出应采用的微架构,即中小规模w e b 应用微 架构。m a m s w a 的特点是考虑了应用的复杂性和可操作性,既保证了应用 程序的安全性又使程序在高效的条件下运行,可以作为其它类似系统设计人 员和程序员的有效参考。第4 章是m a m s w a 应用与系统设计。本章在 m a m s w a 指导下对黑龙江科技学院会议信息管理系统进行设计及实现, 进一步验证了m a m s w a 的有效性、安全性和实用性。结论部分指出了设计 模式的发展方向及微架构的发展,启结了m a m s w a 的特点,以及系统的进 步扩展及以后的工作。 哈尔滨工程大学硕士学位论文 第2 章设计模式理论研究 微架构是在设计模式基础上的综合运用,它是一种由相互关联的模式组 成的网络,由此形成一种现成的解决方案,用于解决一个粒度更大的问题。 它的基础是设计模式,所以本章对设计模式相关问题进行探索和研究。 2 1 设计模式概述 2 1 1 设计模式的起源 r 在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 dc u n n i n g h a m 和k e n tb e c k 把建筑学上的模式观点应用于软件的设 计和开发。他们利用a l e x a n d e r 的一些观点开发了一系列模式,利用s m a j l t a l k 语言实现了雅致的用户界面。利用这个工作成果,他们在1 9 8 7 年召开的面向 对象的编程系统、语言和应用程序( o o p s l aj 研讨会上做了一个以在面 向对象编程中使用模式语言为题的演讲。这成为计算机软件设计模式发展 的开始。 19 9 4 年,由e r i c hg a m l 2 q a 、r i c h a r dh e l m r a l p hj o h n s o n 和j o h nv l i s s i d e s ( 即所谓的“四人组”,g o f :g a n go f f o u r ) 合作的以设计模式:可复用 的面向对象软件的基本原理为题目的书藉出版了。这本书解释了模式的用 处,同时也使得设计模式得到广泛普及。在书中,作者们记录了他们近4 年 半的工作中发现的2 3 小模式。 2 1 2 设计模式的定义 设计模式还没有一个统一的定义,人们出发点的不同会产生对什么是模 式和什么不是模式的理解的不同。一个人的模式对他人来说可能只是基本构 造部件。随着( 设计) 模式的发展,出现了诸多( 设计) 模式的定义【5 】: 1jc h r i s t o p h e r a l e x a n d e r :一个模式是一个特定上下文、问题、解决方 6 哈尔滨工稃大学硕七学位论文 案的三元组。 2 ) r i c h a r dg a b r i e l ( 著名模式专家) :一个模式是一个特定上下文、一系 列驱动力( 经常在该、下文中重复) 、一个特定软件设置( 使得这些驱动力得以 自我解决) 的三元组。 3 ) b u s c h r n a n 和m e t m i e r :模式描述在特定环境下重复出现的设计问题 及其解决方案。, 4 ) - a l p e r t 等:设计模式是我们周围重复出现的设计问题的解决方案。 5 ,g o f :设计模式是对被用来在特定场景下解决一般设计问题的类和相 互通信的对象的描述。 总的来说,设计模式是用来解决一类相关问题的通用技术,而不是解决 问题的特解。对于房间的采光的设计,或许每位建筑师会采用不同的方式来 设计出令人感觉舒适的房问;同样,对于某类问题的解决方案,或许每位编 程人员也会用各- 自不同的方式来实现。模式就是这种解决方案的通用结构, 可以将模式称为“元解决方案而不是解决方案本身 1 。 2 1 3 设计模式的要素 +一般而言,一个设计模式有四个基本要素: 1 ) 模式名称( p a t t e r nn a m e ) 一个助记名,它用一两个词来描述模式的问题、 解决方案和效果; 2 ) 问题( p r o b l e m ) 描述应该在何时使用模式。它解释了设计模式要解决的 问题及其存在的前因后果,它可能描述了特定的设计问题,也可能描述了导 致不灵活设计的类或者列象结构。有时候,问题部分会包含使用模式必须满 足的一系列先决条件; 3 ) 解决方案( s o l u t i o n ) 描述了设计的组成部分,它们之间的相互关系以及 各自的职能和协作方式。由于模式可以用于许多不同的场合,所以解决方案 并不是描述一个特定问题的具体设计或者实现,而是提供设计问题的抽象描 述和怎样用一个具有一般意义的元素组合来解决问题; 4 ) 效果( c o n s e q u e n c e s ) 描述了模式应用的效果及使用模式应该权衡的问 哈尔滨 | 稃大学硕士,砭论文 题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵 活性、扩充性和可移植性的影响。 一个设计模式的命名和抽象确定了一个通用发计结构的主要方面,这些 设计结构能够被用来构造可复用的面向对象设计。设计模式确定了所包含的 类和实例,它们的角色、协作方式以及职责分配。每一个设计模式都集中于 一个特定的面向对象设计问题或者设计要点,描述了什么时候使用它,在另 一些设计结构约束条件下是否还能使用,以及使用的效果和如何取舍f j 】。 2 1 4 设计模式的分类 设计模式在粒度和抽象层次上各不相同道鬻根据以下两条准则对模式 进行分类。 第一是目的准则,即模式是用来完成什么工作的。模式按照其目的可分 为创建型( c r e a f i o n a l ) 、结构型( s t r u c t u r a l ) 、行为型( b e h a v i o r a l ) 三种。创建型模 式与对象的创建有关;结构型模式处理类和对象的组合;行为型模式对类和对 象怎样交互和怎样分配职责进行描述。 第二是范围准则,指定模式主要是用于类还是对象。类模式处理类和子 类之间的关系,这些关系通过继承建立的静态关系,在编译时就确定下来了。 对象模式处理对象间的关系,这些关系在运行时是可以变化的,具有动态性。 从某种意义上来说,几乎所有模式都使用继承机制,所以“类模式”只指那 些集中于处理类之间关系的模式,而大部分模式都属于对象模式的范畴。 创建型类模式将刘象的部分创建工作延迟到子类,而创建型对象模式则 将它延迟到另个对象中。结构型类模式使用继承机制来组合类,而结构型 对象模式则描述了对象的组装方式。行为型类模式使用继承描述算法和控制 流,而行为型对象模式则描述一组对象怎样协作完成单个对象所无法完成的 任务“。 还有一些其他组织模式的方式。有些模式经常会被绑在一起使用,有些 模式是可以替代的,有些模式尽管使用意图不同,但产生的设计结果是相似 的。 8 哈尔滨工程大宁顶t 学位论文 2 1 5 设计模式的作用 设计模式是软件开发的革命性成果,是很多软件设计人员成功设计经验 的结晶,是复杂问题的简单解决方法。总的来说,设计模式主要有以下作用: 1 ) 重用设计,重用设计比重用代码更有意义,它会自动带来代码重用; 2 ) 为设计提供共同的词汇,每个模式名就是一个设计词汇,其概念使得 程序员间的交流更加方便; 3 ) 在开发文档中采用模式词汇可以让其他人更容易理解设计者的想法, 理解为什么会这样做,做了些什么。编写开发文档也更加容易; 4 ) 应用设计模式可以让重构系统变得容易,可确保开发正确的代码,并 降低在设计或实现中出现错误的可能性。还可以为重写其他应用程序提供很 好的系统架构: 5 ) 正确使用设计模式可以节省大量时间 4 1 。 2 2g o f 设计模式 g o f 的设计模式一书,成为了设计模式方面的经典著作。它促进了模式 概念在软件业的普及,同时带动了对模式的研究和应用。g o f 根据模式是用 来完成仟么工作的不同,将设计模式分为创建型模式、结构型模式、行为型 模式三种。 2 2 1 创建型模式 在面向对象的编程万式中,创建对象不是难事,但如果是基于不同的情 况创建不同的对象,这个过程就不容易了。除非应用创建型模式,否则需要 花费很多时间来调试程序。创建型模式( c r e a t i o n a lp a t t e r n ) 对类的实侧化过 程进行了抽象,能够使软件模块做到与对象的创建和组织无关。为了使体系 结构更加清晰,外界对于这些对象只知道它们共同的接口,而不清楚其具体 的实现细节。 这类模式有两个特点: 、 9 哈尔滨工程: l - 硕七学位论文 1 ) 它们都将该系统使用哪些具以的类的信息封装起来; 2 ) 它们隐藏了这些类的实例是如何被创建和放在一起的。 创建型模式主要包括:抽象工厂( a b s t r a c tf a c t o r y ) 、生成器( b u i l d e r ) 、工厂。 y f 去( f a c t o r ym e t h o d ) 、原型( p r o t o t y p e ) 、单态( s i n g t e t o n ) 等5 种模式。 2 2 2 结构型模式 要描述类和对象之间如何进行有效的组织,以开成良好的软件体系结构, 主要的方法是使用继承来组织各个类。一个最容易的例子就是考虑如何用多 个继承组合两个以上的类,结果产生的类结合了父的所有属性。结构型模式 特别适用于使独立的类库一起工作。结构型模式主要包括:适配器对象 ( a d a p t e r ) 模式、桥接( b r i d g e ) 模式、组合( c o m p o s i t e ) 模式、装饰( d e c o r a t o r ) 模 式、外观( f a c a d e ) 模式、享元( f l y w e i g h t ) 模式、代理( p r o x y ) 模式。 2 2 3 行为型模式 行为型设计模式描述算法以及对象之间的任务( 职责) 分配,它所描述的 不仅仅是娄或对象的设计模式,还有它们之间的通讯模式。这些模式刻画了 在运行时刻难以跟踪的复杂的控制流。行为型类模式使用继承机制在类闻分 派行为。如模板方法( t e m p l a t em e t h o d ) 模式和解释i $ ( i n t e r p r e t e r ) 模式;行为 型对象模式使用对象复合而不是继承,它描述一组对象怎样协作完成单个对 象所无法完成的任务,如职责链( c h a i no f r e p o n s i b i l i t y ) 模式、命令( c o m m a n d ) 模式、迭代器( i t e r a t o r ) 模式、中介者( m e d i a t o r ) 模式、备忘录( m e m e n t o ) 模式、 观察老- ( o b s e r v e r ) 模式、状态( s t a t e ) 模式、策略( s t r a t e g y ) 模式、访问者( v i s i t o r ) 模式。 行为型模式中,责任链模式是将处理某个请求的对象连成一条链,用户 可以沿着这条链传递该请求,直到有一个对象处理它为止,j 2 e e 中过滤器就 属于这和模式;命令模式是将一个请求封装成一个对象,从而可用不尉的请 求对客户进行参数化:解释器模式描述的是如何为某个语言定义文法,如何 在该语言中表示一个句子以及如何解释这些句子;迭代器模式提供一种方法 顺序访问一个聚合中的各个元素而又不暴露该对象的内部表示;中介者模式 o 哈尔游下稃大学硕七学位论文 是用一个中介对象来封装一系,i 复杂对象的交互,中介者使各列象不需要显 式地相互引用;备忘录模式是在不破坏封装性的前提下,捕获一个对象的内 部状态并在该对象之外保存这个状态,这洋以后就可将该对象恢复到原先某 一个状态;观察者模式是定义对象问的一种一对多的依赖关系,当一个对象 ,的状态发生改变时,所有依赖于它的对象都得到通知,并自动更新:状态模 式是允许一个对象在其内部状态改变时改变它的行为;策略模式定义一系列 的封装算法,把它们一个个封装起来,并使它们可以相互替换;模板方法模 式是定义个操作中的算法的构架,而将一些步骤延迟到予类中( 即一次性实 现个算法的不变部分,并将可变的行为留给子类来实现) ;观察者模式是使 在不改变各元素类的前提下定义作用于这些元素的新操作。 22 4 其它模式 除了设计模式之外,还有分析模式、过程模式、反模式等在软件系统的 分析、设计与开发中发挥着重要作用。 2 3 使用设计模式解决设计问题 2 3 1 寻找适当的对象 面向对象程序由对象组成,对象包括数据和对数据进行操作的过程。对 象在收到客户的请求后,执行相应的操作。客户请求是使对象执行操作的唯 一方法,操作也是对象改变内部数据的唯一方法。由于这些限制,对象的内 部状态是被封装的,它不能被直接访问,它的表示对于对象外部是不可见的。 面向对象设计最困难的部分是将芋统分解成对象集合。因为要考虑许多 因素:封装、粒度、依赖关系、灵活性。性能、演化、复用等等它们都影 日向着系统的分船,并且这些舅素通常还是相互冲突的。面向对象设计方法学 支誓许多设计方法。但是哪一种方法最好,不能一概而论。 设计的许多对象来源于现实世界的分析模型。但是,设计结构所得到的 类通常在现实世界中并不存在,有些是像数组之类的低层类,而有些则层次 较高。严格反映当前现实世界的模型并不能产生,也能反映将来世界的系统。 设计中的抽象对于产生灵活的设计是至关重要的。设计模式帮用户确定不明 哈尔演一f 群人尹硕十学待论文 显的抽象和描述这些抽象出来的对象。例如,描述过艘或者算法的对象在现 实中并不存在,但是它们却是设计的关键组成部分。这些对象在分析阶段, 甚至在设计阶段的早期并不存在,后来为了使设计更加灵活、复用性更高才 将它们发掘出来。 2 ,3 2 决定对象的粒度 对象在大小和数目上变化极大。它们能表示下自硬件上至整个应用的任 何事物。那么如何决定一个对象应该是什么昵? 。设计模式很好地描述了这个问题。例如,f a c a d e 模式描述了怎样用对象 表示完整的予系统,h y w e i g b t 模式描述了如何支持大量的最小粒度的对象。 其他一些设计模式描述了将一个对象分解成许多小对象的特定方法。例如, a b s t r a c t f a c t o r y 和b u i l d e r 产生那些专门负责生成其他对象的对象;v i s i t o r 和c o m m a n d 生成的对象专门负责实现其他对象或者对象组的请求。 2 3 3 指定对象接口 对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是 所谓的揉作型构( s i g n a t u r e ) 。对象操作所定义的所有操作型构的集合被称为 该对象的接厂 。对象接口描述了谚对象所能接受的全部请习! 的集合,任何匹 配对象接口中型构的请求都可吼发送给该对象。 在面向对象系统中,接口是基本的组成部分。对象只有通过它们的接口 才能与外部交流。如果不通过对象的接口就无法知道对象的任何事情,也无 法请求对象做任何事情。列象接口与其功能实现足分离的,不同对象可咀对 请求板不同的实现,也就是院,萌j 有相同拽口的对象可以有完全不尉的实 现。 当绐对象发送请求时,所引起吕,j 具体操 既与请求本身有关又与接受对 象有关。支持相同谔求的不同对豸、t q 能对请求激发的操作t 。不同的实现。发 送给对幺、的请求和它的相应揲 j 在运行喇刻的连接就称之为动态绑定 ( d y n a m i cb i n g i n g ) 。动态绑定是撕发送的请求直到运行叫刻才受具体实现的 约束。动念绑定运行在运行时劾傲此体会有托同接口的x 4 象。这种可瞥换。阽 称为多忐p o l y m o r p h i s m ) ,这是1 m j 对豸、系统中的核心概念之一。多态简化 2 哈尔滨l 人学硕十学付论文 了客广。的定义,使得对象彼此独立,葬可以在运行时刻功态改变它们相互的 关系。 设计模式通过确定接口的主要组成成分以及接口发送的数据类型,来帮 助定义接口。m e m e n t o 模式就是一个很好的例子,它描述了怎样封装和保存 对象内部的状态,以便一段时间以后对象能恢复到这一状态。它规定了 m e m e n t o 对象必须定义的两个接口:一个允许客户保持和复制m e m e n t o 的限 制接口,一个只有原对象才能使用的用来存储和提取状态的特权接口。设计 模式也指定了接几之间的关系。特别地,它们经常要求类具有相似的接口, 或者对一些类的接口做了限制。 2 34 描述对象的实现 对象的实现是南它的类决定的,类指定了对象的内部数掘和表示,也定 义了列象所能完成的操作。对象通过实例化类来创建,此对象铍称为该类的 、 实例。 理解对象的类与对缘j 类型之间的差别非常重要。一个对象的类定义了 对象是怎样实现的,同时也定义了对象的内部状态和操作的实现。但是对象 的类型只与它的接v a 有关,接口即对象能响应的请求的集合。一个对象可以 有多个类型,不同类的对级可以有相同的类型。当然对象的类和类型是有紧 密关系的。因为类定义了对象所能执行的操作,也定辽了对象的娄型。当谈 到一个列象是一个类的实倪t 即指该对象支持类所定义的接口。 理解类继承和接口继承之间的差别也十分重要。类继承根据一个刘象的 实现定义了另一个对象的实现。简而言之,它足代码和表示的共享机制。然 丽,接口继承描述了一个对象什么利候能被用柬替代弓一个对象尽管许多 话吉并不区分接i 继承和类继承的差别,么是很多设f i 模式依赖于这种差别。 例如,c h a i no fr e s p o n s i b i l i i = 模式中的对象必须有一个公共的类多,但般 情沅下它们刁、具有公共的实现:在c o m p o s i t e 模式中,构件定义了一个公共的 接口,但c o m p o s i t e 通常定义一个公共的实现。 类的继承是一个通过复用父类功能向扩展应用功能的基本机制。它允许 根扼旧对象快速定义斩对象。它允许从矾。任的类中绝t 所石要的绝大部分功 能,从而儿乎无需要任何代价就l ju 获谢新的实现。 哈尔滨f 科人号硕十宁 口沦文 然而,实现的复刚只是成功的一半,继承所拥有的定义具有相同接口的 对象族的能力也是很重要的。这是因为多态依赖f 这种能力。当继承被恰当 使用时,所有从抽象类导出的类将共享该抽象类的接口。这意j 来着子类仅仅 添加或重定义操作,而没有隐藏父类的操作。这时,所有的子类都能响应抽 象类接口中的请求,从而子类的类型都是抽象类的子类型。只根据抽象类中 定义的接口来操纵对象有以下好处: 1 ) 客户无须知道他们使用的对象的特定类型,只需对象有客户所期望的 接口。 2 ) 客户无须知道他们使用的对象是用十r 么类来实现的,他们只需知道定 义接口的抽象类。 这将极大地减少子系统实现之间的相互依赖关系,也产生了可复用的面 向对象设计的原则:针对接口编程,而不是针对实现编程。不将变量声明为 某个特定的具体类的实例对象,而是让它遵从抽象类所定义的接口。 2 3 5 设计应支挎变化 获得最大限度复用的关键在于对新需求和已有需求发生变化删的预见 性,要求系统设计要能够做相应的改进。设计模式可以确保系统能以特定方 式变化,从而帮助避免重新设计系统。每个设计模式允许系统结构某个方面 的变化独立于其他方面,这杩产生的系统对于某种特殊变化将更健斗t 。 2 3 6 各种设计模式应用的环境 1 ) 通过显式地指定一个类柬创建对象。在创建对象时指定类名将使设计 者受特定实现的约束而不是特元三接【j 的约束这会使未来的变化更复杂。要 邂免边种情况,应日j 接地刨建对象,侵用a b s t r a c tf a c t o r y 、f a c t o r ) ,m e t h o d 、 p r o t o t y p e 这些设计 英式; 2 ) 刊特殊操作的依赖。羽户为请求护定一个特殊的操作时,先成该请 求的方式就固定下农了。为避免把代码写歹l 将可以;:编译时刻或者运行时 刻很方便地改殳响应请隶的方法。这样的设计模式有c h a i n o f r e s p o n s i b i l i t y 、c o m m a n d ; 3 j 对馊r lj l i 软件平台的依赖。依赖f 特定平台的软什将很难移值到具他 哈尔滨l 碍人学预十 i 论文 平台上,毖至很难跟一f :本地平台的更新。可以使用a b s t r a c tf a c t o r y 、b r i d 2 e : 4 ) 对对象表示或实现的依赖。知道对象怎样表示、保存、定位或实现的 客户在对象发生变化时可能也需要变化。对客户隐藏这些信息能阻止连锁变 化。可以使用a b s t r a c tf a c t o r y 、b r i d g e 、m e m e n t o 、p r o x y : 5 ) 算法依赖。算法在开发和复用时常常彼扩展、优化和替代。依赖于某 个特定算法的对象在算法发生变化时不得不变化。因此可能发生变化的算法 应该被孤立起来。可以使用的设计模式有:b u i l d e r 、i t e r a t o r 、s t r a t e g y 、t e m p l a t e m e t h o d ; 6 ) 紧耦合。紧耦合的类很难独盎地被复用,因为它们是相互依赖的。这 样的系统是很难学习、移植和维护的密集体。而松耦台提供了一个类本身被 复用的可能性,并且系统更容易学习、移植、修改和扩展。设计模式使用抽 象棍台和分层技术来提供系统的松耦合性。这些设计模式是:a b s t r a c t f a c t o r y 、 c o m m a n d 、f a c a d e 、m e d i a t o r 、o b s e r v e r 、c h a i no fr e s p o n s i b i l i t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抚州市中石化2025秋招面试半结构化模拟题及答案油田工程技术岗
- 国家能源济源市2025秋招半结构化面试模拟30问及答案
- 中国广电漯河市2025秋招行业常识50题速记
- 中国联通贵港市2025秋招综合管理类专业追问清单及参考回答
- 中国联通山东地区2025秋招面试无领导高频议题20例
- 2025年职高冲刺考试题及答案
- 七台河市中石化2025秋招笔试行测50题速记
- 四平市中石化2025秋招笔试模拟题含答案新材料与新能源岗
- 信阳市中石油2025秋招面试半结构化模拟题及答案新材料与新能源岗
- 中国移动白银市2025秋招面试无领导高频议题20例
- 浙江省宁波市鄞州区曙光中学2024-2025学年九年级上学期10月月考科学试卷(1-3章)
- 旅游项目可行性分析报告
- 保险业务员述职报告
- 中心静脉深静脉导管维护操作评分标准
- 导尿术操作护理课件
- 推进班组信息化建设:利用信息技术提高工作效率
- 2023年上海市虹口区初三一模语文试卷(含答案)
- 优势视角课件完整版
- 花城版音乐课时15-第12课 走近戏曲(一)观赏京剧学习念白-京剧丑角的念白《报灯名》-课件
- 《食品安全法》与粮食质量安全专题培训课件
- 2023年安康市交通建设投资集团有限公司招聘笔试题库及答案解析
评论
0/150
提交评论