




已阅读5页,还剩59页未读, 继续免费阅读
(计算机应用技术专业论文)基于设计模式的企业应用的研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工火学硕士学位论文 摘要 随着企业应用系统日益复杂,企业应用系统产品化趋势逐渐上升,为了提高软件开 发的效率和质量,解决软件设计开发过 皇中的非功能性问题,采用先进的软件工程方法 进行系统开发显得愈加迫切。设计模式作为近年来软件复用方法中的热点,它能有效地 解决软件设计的复用问题,可以使软件复用从代码复用提高到软件开发各阶段知识的复 用,促进了软件产品化,是解决企业应用系统中非功能性需求的有效途径。 本文首先介绍了设计模式的基本理论,分析了设计模式的选择与使用方法,并研究 了设计模式的具体化和检索方法,在传统系统开发过程基础上,把设计模式运用于系统 开发过程,它在系统设计阶段引入设计模式来指导系统的设计和开发。在该方法指导 下,本文通过对企业应用特点、传统企业应用模型的分析,在实践的基础上构建了基于 设计模式的企业应用系统模型,该模型分为三层:数据层、业务逻辑层和表示层。在数 据层,本文把抽象工厂( a b s t r a c tf a c t o r y ) 和数据访问对象( d a t aa c c e s so b j e c t ,d a o ) 模式 相结合,解决了企业应用异类数据源问题;为了实现企业应用系统层间的松散耦合,详 细设计了以外观模式( f a c a d e ) 为接口的业务逻辑层组件;然后设计了表示层组件;对于 企业应用模型层间的数据传输问题,本文对当前的数据传输对象a t at r a n s f e ro b j e c t , d t o ) 模式做了改进:将工厂方法( f a c t o r ym e t h o d ) 和d t o 模式组合形成角色d t o 模 式。这种角色d t o 模式的运用,能够实现可插入性,而且间接地实现了权限控制,提 高了网络性能。 最后,本文又结合一个应用实例一一服务订单支持系统( s e r v i c eo r d e rs u p p o r t s y s t e m ,s o s s ) 的构建过程,通过对异类数据源的通用数据层组件的实现,以及配车子系 统的设计实现过程,对设计模式解决企业应用系统中问题做了进一步的说明阐述。 关键词:设计模式;组件:软件体系结构;框架 基于设计模式的企业应用的研究及席用 r e s e a r c ha n di m p l e m e n t a t i o no fe n t e r p r i s ea p p l i c a t i o n b a s e do nd e s i g np a t t e r n a b s t r a c t a se n t e r p r i s e a p p l i c a t i o nb e c o m e sm o r ec o m p l i c a t e d ,i t sp r o d u c t i v i t yt e n d e n c yr i s e s g r a d u a l l y i no r d e rt oi m p r o v e t h ee f f i c i e n c ya n d q u a l i t yo f s o f t w a r ed e v e l o p m e n t ,a n ds o l v e n o n f i m c t i o n a lp r o b l e m s ,i tb e c o m e sm o r eu r g e n tt o a d o p ta d v a n c e d s o f t w a r e e n g i n e e r i n g m e t h o d si n s y s t e md e v e l o p m e n t a st h eh o ts p o t o fs o t t w a r e r e u s e ,d e s i g np a t t e r nc a n e f f e c t i v e l ys o l v er e u s ep r o b l e m si ns o f t w a r ed e s i g ns t r a t e g y ,i m p r o v es o f t w a r er e u s ef r o mc o d e t oe a c hs t e po fs o f t w a r ed e v e l o p m e n t ,m a k es o t t w a r ep r o d u c t i v i t ya n ds o l v en o n f u n c t i o n a l p r o b l e m s i ne n t e r p r i s ea p p l i c a t i o n f h i sp a p e r f i r s t l yi n t r o d u c e s t h eb a s i ct h e o r i e so f d e s i g n p a t t e r na n da n a l y s e si t sc h o i c ea n d w a y st ou s e ,a n dr e s e a r c h e si t sc o n c r e t i o na n d i n d e xm e t h o d s o nt h eb a s i so f t r a d i t i o n a ls y s t e m d e v e l o p m e n tp r o c e s s ,t h i sp a p e ra p p l yd e s i g np a t t e r nt os y s t e md e v e l o p m e n tp r o c e s s ,w h i c h i n t r o d u c e sd e s i g np a t t e r n st oi n s t r u c td e s i g na n d d e v e l o p m e n t u n d e rt h em e t h o d ,t h r o u g ht h e a n a l y z i n gt h e c h a r a c t e r i s t i c sa n dt r a d i t i o n a lm o d e l s ,t h i s p a p e r c o n s t r u c t sa l l e n t e r p r i s e a p p l i c a t i o nm o d e lb a s e do nd e s i g np a t t e r nu p o np r a c t i c e ,t h i sm o d e l i n c l u d e st h r e el a y e r :d a t a l a y e r ,b u s i n e s sl o g i c a ll a y e ra n dp r e s e n t a t i o nl a y e r t h i sp a p e rd e s i g n sg e n e r a ld a t al a y e r c o m p o n e n tu p o n t h ec o m b i n a t i o no f a b s t r a c tf a c t o r ya n dd a t aa c c e s s o b j e c t ( d a o ) p a t t e r n t o s o l v et h ep r o b l e mo fd i f f e r e n tt y p e sd a t as o u r c e s ;i no r d e rt or e a l i z el o w - c o u p l i n ga n dh i g h - a g g r e g a t i o nf u n c t i o nb e t w e e nd i f f e r e n tl a y e r s ,w ed e s i g nb u s i n e s sl o g i c a lc o m p o n e n t m o d e l w i t hi t si n t e r f a c ef a c a d ei nd e t a i l ;a f t e rt h a t ,i td e s i g n sp r e s e n t a t i o nl a y e rm o d e l b r i e f l y ;a i m i n g t os o l v et h ep r o b l e mo fd a t ai x a n s f e r , t h i sp a p e ri m p m v e st h ed a t at r a n s f e ro b j e c t ( d t o ) p a t t e r n :c o m b i n i n gf a c t o r ym e t h o da n dd t o p a t t e r ni n t or o l ed t op a t t e r n t h i sp a t t e mc a l l r e a l i z et h ep l u g - i nf u n c t i o na n da u t h o r i t yc o n t r o li n d i r e c t l ya n di m p r o v e st h eq u a l i t yo f n e t w o r k i nt h ee n d m a k i n gu s eo f a p r a c t i c a le x a m p l e t h ed e s i g np r o c e s s o f s e r v i c eo l d e rs u p p o r t s y s t e m ( s o s s ) ,a i m s a tt h er e a l i z a t i o no f g e n e r a ld a t al a y e rc o m p o n e n to f d i f f e r e n tt y p e sd a t a 5 0 u a c e s ,a n da l l o c a t i o ns u b - s y s t e m sd e s i g n ,t h i sp a p e r m a k e sm o r ea c c u r a t ee x p l a n a t i o na b o u t t h eu s eo f d e s i g np a t t e r ni ne n t e r p r i s ea p p l i c a t i o n k e yw o r d s :d e s i g np a t t e r n ;c o m p o n e n t ;s o f t w a r e a r c h i t e c t u r e ;f r a m e w o r k 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究 工作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得 大连理工大学或其他单位的学位或证书所使用过的材料。与我一同工作 的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢 意。 作者签名: 大连理工大学硕士学位论文 1 绪论 1 1 论文的研究背景 随着当前企业应用的快速发展,对软件的需求越来越高,企业应用系统产品化趋势 逐渐上升,传统的软件开发方法面j 临挑战,具体表现为:软件成本高,质量不理想、开 发进度难以控制、工作量难于准确估计、软件修改与维护困难。 为解决软件开发中存在的诸多问题,软件工作者很早就开始对软件开发方法与过程 进行研究与探索,试图通过分解软件,降低软件的构造难度,以控制软件构造的复杂 度。w e d i j k s t r a 提出了结构化程序方法指导程序设计;d k n u t h 提出要把算法与数据结 构作为独立实体从使用它们的程序中分离出来( 朗程序= 数据结构+ 算法) :n w u t h 提出了 “自顶向下,逐步细化”的程序设计方法:d p a m a s 提出了信息隐藏原理;e y o u r d o n 等 人提出了s a & s d 方法【1 。以上思想方法极大的影响了软件的开发。 与此同时,随着社会信息化迅速发展企业应用越来越广泛,规模越来越大,需求 越来越多,系统日益复杂。同时,我们不难发现现在的计算机软件系统存在以下的事实 t ) 少量的计算机软件系统是全新的,大多数是一个基本系统的变种。 2 ) 重复或部分重复地构造一个同类系统的费用是昂贵的,这是工程领域的普遍问 题,但它在软件工程中尤为突出。 3 ) 解决“新”问题的现有方法通常有多个,但它们可能仅提供部分的解决方案。 虽然软件复用技术是解决以上问题的有效途径之,而且软件复用方法己从原先的 代码复用发展到了软件方案的复用。然而,随着软件系统规模的扩大和复杂性的增加, 在软件设计过程中人们所面临的阀题已不仅仅是考虑软件系统的功能问题,而是面临要 解决更难处理的非功能性需求,如系统性能、可适应性、可靠性、可移植性、可维护性 等需求,不幸的是,传统的分析与设计只把注意力集中在功能需求上,而忽略了非功能 性的需求。最近软件工程领域的热门课题一“设计模式”正是为了有效地解决此类 软件复用问题。设计模式是人们在长期的软件开发实践中,总结出了些解决特定问题 的有效方法,并加以总结提炼,在磁到类似问题时,就可以直接复用以前的方法。因 此,为了解决企业应用中的非功能性需求,促进企业应用系统的产品化,设计模式在企 业应用中的研究及应用正越来越受到人们的重视,而且也是非常紧迫必要的。 1 t 2 研究的目的和意义 在企业应用领域研究与应用设计模式对促进企业应用软件产业的发展有着深远的意 基于设计模式的企业应用的研究及应用 义和实际应用价值。 设计模式是一种在一定环境下反复出现问题的解决方案。一个设计模式是环境、问 题、解决方案的统体,是针对反复出现的问题的,它来源于成功的经验。模式是高度 抽象的,它捕捉的是成功解决方案中的结构精华,而不是具体的技术细节。设计模式通 过明确对象、对象问的协作和职责分配,捕捉到了隐藏在设计背后的意图。 设计模式使设计人员可以更加简单方便地改进和复用已往成功的设计和体系结构, 将己被实践证明的技术表示成设计模式也会使新的系统开发者更加容易理解其设计思 路。 因此,在企业应用开发中,根据过去成功系统的经验,得出一些简洁而优雅的解决 方案;提取各种企业应用行业的共同特点,形成各种领域软件架构。结合两者形成企业 应用专用的设计模式,并且分类形成企业应用模式库,就能在以后的企业应用开发中, 根据领域特点检索、选择、提取合适的模式,像搭积木样来分析和设计系统。 在企业应用领域开展设计模式的研究,可以解决企业应用开发中现存的许多问题, 人们可以更简单方便的复用成功的设计和体系结构。既提高了软件重用的程度,又可以 便于开发人员之间的交流,还进一步保证了系统的稳定性、灵活性。基于设计模式开发 将是企业应用的发展趋势。 具体来说有以下几点意义: 第一,可促进企业应用软件生产的工程化。设计模式是为软件工程提供类似于其他 工程领域的设计手册迈出的第一步,它列举出软件设计的基本部分,并做出详尽的阐 述。 第二,提高企业应用软件设计质量。复用设计模式可提高软件在可适应性、可靠 性、可收缩性等方面的设计质量。 第三,提商企业应用软件设计效率。设计模式的目标是在软件工程领域建立文档, 以帮助软件开发者解决在软件开发全过程中面临的重复出现的问题。 第四,设计模式便于软件开发团体内部以及开发团体之间的沟通。由于设计模式有 明确的名称、环境,以及相应的解决方案,并且都有相应的明确的含义,所以便于沟通 与交流。 第五,模式可提高对新手进行培训的效率,让新加入的队员尽快了解设计意图与策 略。 第六,设计模式也是解决企业应用设计具体问题的有效方法,对企业应用系统产品 化、重构和升级提供了强有力的支持。 2 大连理工大学硕士学位论文 因此,对企业应用领域中设计模式的研究具有深远的重大意义。 1 3 国内外研究现状 设计模式的研究历史不到十年,是一个新兴的研究领域,同时也是一个热点研究领 域。国外从9 0 年代初就有人开始关注软件代码模式。自从“四人组”设计模式问 世,引起了国外软件工程界对设计模式的极大关注。此后,设计模式成了软件工程领域 中的热门研究课题。目前,国外软件工程界正把设计模式应用于软件体系结构、设计、 编码和软件开发的过程和组织等,其理论成果主要体现在从1 9 9 4 年开始的“程序设计模 式语言( p a t t e r nl a n g u a g e so f p r o g r a m m i n g p l o p ) ”年会论文集中。国内对于设计模式基本 从1 9 9 6 年才开始了解,对设计模式的研究也就最近几年才开始,设计模式在企业应用领 域的研究及运用刚同u 起步。 目前对设计模式的研究及其研究成果仍然存在一些问题:已有的设计模式涉及的范 围有限;设计模式大多没有清楚明确的应用指南,比较难以运用,而且也没有任何可以 帮助开发人员检查模式使用是否正确的机制:设计模式中本质、抽象的东西太少等等。 针对以上问题,目前对于设计模式的研究工作主要集中在以下几个方面: 1 ) 新设计模式的发现和发明。每年国际上都举办包括p l o p 、e c o o p 等在内的学术 会议对设计模式进行讨论,据权威统计,目前软件界己经总结出来大约7 0 0 种不同的设 计模式,人们正在各个领域总结设计模式,如通信领域、w e b 开发领域。设计模式与其 他面向对象技术的关系也是当前研究的热点。 2 ) 模式的组织和索引。目前的设计模式还仍然是用文档的形式来记载,面对设计模 式数量的迅速增长,因此需要一种合适的覆盖所有模式的组织方法,并对其中的模式提 供一个索引,建造一个可以有效的支持高质量软件开发的真正成熟的模式系统。 3 ) 设计模式的使用自动化。目前设计模式使用自动化和设计模式支持工具的研究也 是一个热点。 4 ) 形式化模式。在设计模式研究过程中,国外已经提出了很多关于设计模式结构的 描述方法。一般分两类:图示化方法,如o m t 2 ;形式化数学表示法。目前的研究趋 势是这两类方法逐步靠拢。国内也对模式形式化做了定的研究,并且结合了新技术, 如:基于x m l 的,混舍规范描述模型等【3 5 】。 5 ) 设计模式的应用及具体化。虽然设计模式有很多,并且设计模式的提出也是针对 所有领域的,但是并不是所有的模式都直接可以拿来直接应用的,有的模式可能适合某 应用但需要对它进行改造,用改造的设计模式或经典设计模式来解决具体设计问题,使 一3 。 基于设计模式的企业应用的研究及应用 其更加适合于该应用,所以设计模式应用和改造来适应具体设计问题也是当前研究的热 点。 总之,设计模式是一个既新颖又长久的研究方向,随者企业应用的迅速发展和产品 化,在我国对设计模式的研究正方兴未艾,为以后全面的发展做准备。基于设计模式的 企业应用的研究,可以解决企业应用设计开发中现存的许多问题,人们可以更简单方便 的复用成功的设计和体系结构,在模式库建立后,开发人员的设计思路将走上一条全新 的基于设计模式的企业应用开发之路。 1 4 本文的主要研究内容及内容组织 结合软件工程、面向对象方法学、设计模式、软件重用等技术,本文的主要研究内 容是: 1 企业应用领域的设计模式提取。根据国内外已有的各种设计模式,结合企业应用 的特点,在已成功的系统基础上,提取出适合企业应用的设计模式,然后把这些模式应 用于企业应用设计来改善企业性能。 2 设计模式在具体应用中的选择、使用方法。设计模式如何与具体应用相结合、根 据具体应用特点来进行特化的探讨。 3 初步探讨并设计了设计模式库的维护和检索方法。 4 设计模式在系统开发过程上的研究,在系统设计阶段引入设计模式来指导系统的 设计和开发。 5 企业应用领域的设计模式的研究与应用。在传统的企业应用分层的基础上搭建了 基于设计模式的企业应用系统模型,然后针对企业应用模型的特点和特定问题,分别从 设计模式角度构建了数据层组件模型、业务逻辑层组件横型和表示层组件模型,并对层 问数据传输方法做了相应的研究和改进。 6 本文的最后一章以s o s s 系统为例,对设计模式在企业应用系统中的应用进行了 进一步的说明阐述,并从细节上验证了设计模式在企业应用领域的可适用性。 论文的组织结构如下: 本文首先对设计模式基本理论进行介绍;然后对设计模式选择和使用方法、设计模 式的具体化方法和模式库的组织和检索方法进行研究,并把设计模式引入系统开发过 程;接下来针对传统企业应用模型,拇造了基予设计模式的企业应用系统模型,从数据 层、业务逻辑层和表示层分别对模型进行了详细的设计,并对层间数据传递方法进行了 研究和改进;最后结合应用实例,对设计模式在企业应用系统中的应用进行了进一步的 说明阐述。 4 大连理工大学硕士学位论文 2 设计模式理论研究 2 1 设计模式及相关描述 2 1 1 设计模式的定义 关于设计模式的定义有很多种,我们在这里列出t j l 个有代表性、权威性的定义: 定义1 :a l e x a n d e r 给出的经典定义是:每个模式都描述了一个在我们的j ;| = 境中不断 出现的问题,然后描述了该问题的解决方案的核一t 2 , 。通过这种方式,你可以无数次地使 用那些已有的解决方案,无需在重复相同的工作 6 。 定义2 :模式是在某种特定的场景( c o n t e x t ) 下某个不断重复出现的问题的解决方案 f 7 1 。模式本身并没有任何的创新性,它仅仅是对于些已经被证明为优秀的解决方法的 归类、总结,目的是为了重用该解决方案而又不用做重复的劳动。其中,“特定场景” 和“重复”两个限定词非常关键,“特定场景”给出了什么时候以及为什么使用一个模 式,“重复”说明了模式的可重复性从而可以被重用。 定义3 :j a m e so c 在文献中定义模式为:“模式是种描述特定环境下的设计问 题和对这个问题的通用解决方案【8 。”软件中的模式分为:分析模式( a n a l y s i s p a t t e r n ) ,体系结构模式( a r c h i t e c t u r a lp a t t e r n ) ,设计模式( d e s i g np a t t e r n ) ,代码模式, ( c o d i n gp a t t e r n ) ,测试模式( t e s t p a t t e r n ) ,进程模式( p r o c e s sp a t t e r n ) ,组织模式 ( o r g a n i z a t i o np a t t e r n ) 。 定义4 :j a m e so ,c 和d o u g l a sc s 给出的设计模式定义:“设计模式捕获的是在特 定环境下建造应用时重复出现的静态和动态结构的解决方案 9 】”。 定义5 :由于目前设计模式的研究主要集中在对象技术领域,所以现有的大多数设 计模式都是面向对象的设计模式。e r i c hg a m m a 等“四人组”给出了面向对象的设计模 式的个定义:“设计模式是对一些通过互相通讯以解决在特定环境下的通用设计问题 的对象和类的描述 1 0 】。” 2 1 2 设计模式的描述形式 多数的模式研究者认为抽象的模式需要用一种结构化的形式来表达。目前,在软件 界,模式的描述己形成四种具有代表的形式:a l e x a n d e r 格式、g a m m a 格式、c o p l i e n 与 s c h r n i d t 格式、r i e h l e 与z u l l i g h o v e n 格式。以上四种代表性的模式描述形式各具特色,使 用意图不同,侧重点也不同。使用a l e x a n d e r 格式的意图主要引导用户对所描述的问题产 生解决方案,其特色在于它的再生能力。使用o a m m a t 各式的意图也是帮助用户创造解决 5 基于设计模式的企业应用的研究及应用 问题的方案,但它把注意力更多地集中在模式自身的实际结构与动态行为上而对什么 时候使用该模式关心得少,其特色在于描述性,而不是模式的再生能力。使) 千 r i e h l e 与 z u l l i g h o v e n 格式的意图是在不提出模式的特定使用方式的情况下讨论模式的结构、动态 行为以及它的环境,其特色在于它的通用性,可经过适当限制以用于特定的用途。 r i e h l e 与z l l l l i g h o v e n 格式基本上没有再生能力,但它可用于多个目的如创建模式的实 例、比较相似的模式、在现有的系统中匹配与认识模式等。其中g a m m a 格式是用的最广 的格式,也称g o f 格式: ( 1 ) 模式名称和分类:模式名称简洁的描述了模式的本质。一个好的名字非常重 要,因为它将成为你的设计词汇表中的部分。 ( 2 ) 模式目标:描述这个模式是做什么的,基本原理和意图是什么,可以解决什么 问题。 ( 3 ) 别名:描述模式的其他易于为人理解的别名。 ( 4 ) 动机:通过描述一个设计问题事例,来帮助理解模式要解决什么问题。 ( 5 ) 适用性:描述什么情况下可以应用本设计模式,可以解决哪些问题,以及该模 式可阱改进哪些不良设计,怎样识别这些情况。 ( 6 ) 结构:用图形表示模式中的类及它们之间的关系。 ( 7 ) 参与者:描述模式中的类和或对象,以及所扮演的角色及责任。 ( 8 ) 协作:描述参与者如何协作以完成它们的责任。 ( 9 ) 效果:描述应用模式可以达到什么效果,应用时需做哪些取舍和决策。 ( 1 0 ) 实现:描述实现模式时的陷阱、指导或技术问题。以及是否存在某些特定于实 现语言的问题。 ( 11 ) 代码实例:一般以动机中提出的问题为例,给出模式实现的例子代码。 ( 1 2 ) 己知的应用例子:本模式己被成功应用的例子介绍。 ( 1 3 ) 关联模式:描述本模式可以与哪些模式搭配使用。 虽然设计模式的描述形式有多种,但在书写设计模式时具体采用什么样的描述形式 主要取决于所期望的设计模式用途。 2 13 设计模式的要素 一般而言,一个模式有四个基本要素。 1 模式名称( p a t t e r nn a m e ) :一个助记名,它用一两个词来描述模式的问 题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我 们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就 ,6 大连理工火学硕十学位论文 可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其 他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难 点之一。 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 ) :描述了模式应用的效果及使用模式应权衡的问题。尽管 我们描述设计决策时,并不总提至4 模式效果,但它们对于评价设计选择和理解使用模式 的代价及好处具有重要意义。软件效果大多关注对时闻和空间的衡量,它们也表述了语 言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵 活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮 助。 2 1 4 设计模式的分类 软件设计模式的分类有不同的方法,本文主要根据以下几个方面来进行分类。 1 ) 根据应用的领域,设计模式分为通用领域的设计模式和特殊领域的设计模式。特 殊领域包括并发领域、分布式领域、持久化机制领域和时间领域等。 2 ) 在应用的领域,依据目的不同,模式可分为创建型模式、结构型模式和行为型模 式三类。 创建型模式与对象的定g 建有关,即描述怎样创建一个对象,它隐藏对象创建的具体 细节,使程序代码不依赖具体的对象。 结构型模式处理类或对象的组合,即描述类和对象之间怎样组织起来形成大的结 构,从而实现新的功能。 行为型设计模式描述算法以及对象之间的任务( 职责) 分配,它所描述的不仅仅是类 或对象的设计模式,还有它们之间的通讯模式。 3 ) 根据模式是用于类还是用于对象,可将其分为类模式和对象模式。类模式处理类 和子类之间的关系,这些关系通过继承建立,在编译时刻便确定下来,是静态的:对象 7 基于设计模式的企业应用的研究及应用 模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具有动态性。 21 5 设计模式的特性 d o u gl e a 在他的文章中提出一个好的模式应该有如下的特性1 1 : ( 1 ) 封装和抽象( e n c a p s u l a t i o na n da b s t r a c t i o n ) :每个模式封装了在特定领域中明确 定义的问题和它的解决方案。模式应该提供清晰的边界,通过把问题空间和解空间分解 成不同的、不相连的片段,使得他们变得明确。模式还应该作为体现领域知识和经验的 抽象,而且可以出现在领域中概念粒度的不同层次上。 ( 2 ) 开放性和变化性( o p e m a e s sa n dv a r i a b i l i t y ) :每个模式可以被其他模式扩展或参 数化,这样它们可以协同工作于更大的系统。一种模式不应和具体开发工具过分相关, 而目可以用不同的方式实现。 ( 3 ) 生成和组装( g e n e m t i v e n e s sa n dc o m p o s a b i l i l y ) :每个模式一旦应用可以产生与其 他模式的初始上下文相匹配的结果上下文。这样模式可以一个接一个的应用以产生整体 解决方案。“模式通过递增的方式应用,一个模式的应用提供了另外一个模式的初始上 下文”。但模式不是简单的线形叠加,而是在不同的层次间以网状结构交织在一起。 ( 4 ) 平衡( e q u i l i b r i u m ) :每个模式必须在其约束中平衡。这可能是因为一个或多个用 于最小化解空间冲突的不变量和启发信息。不变量通常代表特定领域的潜在问题求解原 则,提供了模式中每个步骤或规则的原理。 每个模式描述了一个整体,这个整体并不是各组成部分的简单叠加。d o u gl e a 关 于模式特性的讨论在第( 3 ) 点可能有些绝对化。这似乎以为可以通过简单地一个接一个 地使用模式来构造任意软件系统。在某些特定领域这是可能的,但目前并没有完备的软 件开发模式语言,这将导致在多数领域第( 3 ) 点并不适用。g o f 的2 3 种模式不构成完备 的模式语言,而且g o f 认为永远也不可能有一个完备的通用的软件模式语言( g o f 认为 对于特定领域这样的模式语言是可能的) 。 2 2 设计模式的原则 在面向对象设计模式中很多因素在共同起作用:继承、组装、封装、粒度、灵活 性、演化、重用性等等。将系统分解为相互合作的对象,并将其作为一个可重用单元是 困难的。设计模式描述了在特定的背景下一组对象如何交互以完成特定的任务,保持了 设计的灵活性、重用性,使得系统具有低耦合高聚合的特点。在面向对象的设计中,特 别是对于设计模式存在以下原则 1 2 】: 1 ) 接e 编程f i n t e r f a c e ) 优于实现编程( 1 m p l e m e n t a t i o n ) 3 。 大连理j 二大学硕士学位论文 类继承是一个通过复用父类而扩展应用功能的基本机制。通过类继承可以把父类复 用于子类,从而继承所需要的功能( 实现) 和接口。对于功能( 实现) 的继承表示了代码的 复爵机制;对于接口的继承描述了何时一个对象可以替换另一个对象。所有从抽象类导 出的子类共享接口,这意味着子类仅仅添加或重定义操作,而没有隐藏父类的操作。所 有的子类都能响应抽象类接口中的请求,从而子类的类型都是抽象类的子类型。多态正 是依赖这神能力。 根据接口编程的好处是: 客户无须知道他们所使用对象的特定类型,只须对象有客户所期望的接口。 客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的 抽象类。 这大大减少了系统实现问的相互依赖关系。当不得不在系统的某个地方实例化具体 的类时,创建型模式可以帮助你在实例化时建立接口和实现透明连接。 2 ) 优先使用对象组合( o b j e c tc o m p o s i t i o n ) ,而不是类继承( c l a s si n h e r i t a n c e ) 面向对象系统中功能复用的两种最常用的技术是类继承和对象组合。类继承可以根 据超类的实现定义予类。通过继承的重用称为“白盒重用”( w h i t e b o xr e u s e ) 。父类的内 部细节对子类通常是可见的。对象组织与类继承不同。新的、更为复杂的功能是将对象 组织在一起获得的。被组装的对象具有明确定义的接口,对象的内部细节是不可见的, 称为“黑盒复用”( b l a c k - b o xr e u s e ) 。 类继承在编译时静态定义,使用起来较为直观,直接由程序设计语言支持,类继承 通过对超类某些操作的过载可容易地修改实现。类继承的缺点是:首先,由于继承是在 编译时确定的,不能在运行时修改实现。其次,父类常定义了子类部分的物理表示,对 子类暴露了实现细节,经常被认为是破坏了封装性。第三,子类的实现捆绑在父类的实 现之上,父类的实现的变化会强迫子类跟着变化。 对象组合是根据对象引用在运行时动态的定义。组装需要仔细地设计对象接口。这 样做的好处是:因为对象仅从接口存取,维护了封装。只要具有同样的类型,任何对象 可在运行时被其他对象替换。再者,因为对象的实现是根据对象接口丽写的,具有较少 的实现依赖性。 对象组装对系统设计具有另一种影响。优先于类继承考虑对象组装有助于类的封装 和集中于一个任务。类及类层次会变的较小,不会变成不可管理的匿物。另一方面,基 于对象组装的设计包含更多的对象,系统的行为依赖于对象间的交互关系。 3 ) 区分运行( n l i “m e ) 时和编译时( c o n 叩i l e m m e ) 结构 9 , 基于设计模式的企业应用的研究及应用 面向对象程序的运行时结构很少与其代码结构类似。代码结构在其编译时确定,由 固定的类继承层次构成。程序的运行时结构由快速变化的对象通讯网络构成。实际上, 两个结构在很大程度上相互独立,从一个结构理解另一个结构非常困难( 通过建模可以 帮助我们理解这两种结构,为此需要为每个结构建立一种模型) 。很明显,代码结构很 难揭示一个系统是如何运作的。设计人员必须清楚系统的运行时结构。对象之间的关系 和它们的类型必须仔细设计,因为它们决定了系统的运行时结构是好是坏。 2 3 模式语言、模式目录、模式系统 模式不会孤立存在,它们之间会有很多相互的依赖关系。模式可以组织成模式目 录,但它不能反映模式问的多方面关系,仅包含少量的组织和结构。模式语言和模式系 统邯形成了连接紧密的、相互交织在一起的模式集合。相对于模式系统,模式语言具有 健壮性、完整性。模式语言可以生成整个的设计。但这样的语言通常局限在较小的领 域。模式系统比模式语言松散的多,它不强调完整性,不宣称可以生成整个设计,没有 模式系统中的规则和指导方针。 1 模式语言( p a t t e r nl a n g u a g e s ) a l e x a n d e r 认为,没有任何一个模式是孤立存在的,每一个模式在世界上之所以能 够存在,只因为在某种程度上得到其他模式的支持。模式语言不是通常意义的语言,是 一个结构化的模式集。它定义了各模式之间的组合规则,并将该语言内的模式组合成一 个特定领域的体系结构。模式语言描述了相关系统的软件a g ( s o f t w a r ef a m i l i e s ) 。好的模 式语言可以引导设计者设计出好的体系结构,而好的体系结构是持久的、实用的,并且 在美学上是合意的。好的模式组合为此三个目标而能平衡一个系统的压力。好的模式语 言能给设计者提供足够的自由来表达他们自己的思想,并根据模式应用环境的特定要求 而裁剪解决方案。一个模式独立地解决一个相对独立的设计问题,而模式语言构建一个 系统,模式通过模式语言可获得最佳的性能。模式语言不是模式的简单集合,也不仅仅 是多种模式的决策树,而可能是模式的有向图 1 3 1 。 2 模式目录( p a t t e mc a t a l o g s ) 模式目录也是模式的集合,但是它只是松散的组织方式,没有模式语言所特有的整 休性功睢 1 4 1 。模式目录的缺点是不能体现出模式的系统性,不便于设计人员快速地查 到所需要的模式,无法按领域收集各类模式。g o f 就是采用模式目录。把模式组织成创 建型模式、结构型模式、行为型模式三大类,但该种目录方式不是模式语言。 3 模式系统( p a t t e r ns y s t e m ) 1 0 大连理上人学硕士学位论文 模式系统是一组联系密切的相关模式,支持整个体系结构的构造和开发。它不仅组 织成多层粒度相关的模式组,而且描述了模式及其模式组之间的相互关系以及它们如何 结合和组装以解决更为复杂的问题,模式系统中的所有模式应以一致、统一的风格描 述,并应覆盖成分广的问题和解,使之能够成为建立完整体系结构的主要部分 1 5 1 。 模式系统的主要目的是支持高质量的软件系统的开发,即系统既满足功能要求,又 满足非功能需求。为了达到这个目的,模式系统应满足下列要求: 应该包含足够的模式作基础。 它应该一致地描述所有模式。 它必须解释模式之间的各种关系。 它应该将所包含的模式有机的组织起来。 它应该支持软件系统的构造。 应该支持它本身的进化。 模式系统不仅仅是一个模式的集合,必须说明有效的组织方案,以指导用户选择模 式和用模式构造软件系统。必须保证模式系统对于它自身的进化是开放的。g o f 可以被 认为是个模式系统。 2 4 设计模式与软件体系结构 2 4 1 软件体系结构的概念 软件体系结构是一个软件系统构件的组织结构,是它们之间的关联关系以及支配系 统设计和演化原则和方针d 6 。般来讲,一个系统的软件体系结构是由一组计算构 件、构件之渊的交互连接件以及构件和连接件如何结合在一起的约束限制的描述组成 的。一个特定的系统是用一些构件的集合和构件之间的交互来定义的,而这样的系统又 可以在大型的系统设计中作为一个复杂的元素。客户和服务器、数据库、层次系统中的 层都是构件的实例。软件体系结构不仅指定了系统的组织结构和拓扑结构,而且还显示 了系统需求和构成系统元素之间的对应关系,提供些设计决策的基本原理。一般来 彘,体系结构模型辩明了构件和构件交互中结构和语义的差异。这些体系模型通常又被 组合起来定义更大的系统。理想情况下不同的体系结构描述的元素是独立定义的,因此 它们可以在不同的上下文中重复使用。这样体系结构建立的这些单独的元素规格说明就 可以被建造成体系结构级的子系统。 软件体系结构描述了子系统、以及子系统间的关联,并按功能与非功能的属性进行 归类,体现出软件设计活动的成果。 基于设计模式的企业应用的研究及应用 软件体系结构的设计是整个软件开发过程中关键的步。对于当今世界上庞大而复 杂的系统来说,没有一个合适的体系结构却要有一个成功的软件设计几乎是不可想象 的。不同类型的系统需要不同的体系结构,甚至一个系统的不同子系统也需要不同的体 系结构。体系结构的选择往往会成为一个系统设计成败的关键。 2 4 2 设计模式与软件体系结构的关系 软件体系结构必须明确标识不同的构件类型和它们的交互关系( 连接类型) 。构件通 常对应程序设计语言中的编译单元,连接通常为表) k i s i ( t a b l ee n t r i e s ) 、动态数据结构、 初始化参数等等。每种体系结构风格都定义了特定的构件类型、连接类型以及全局的控 制结构。而设计模式所提供的解是基本的结构,并不是详细、完整的解。一个设计模式 提供了对于一组设计问题的一般的解的框架,而不是预定义的可拿来就用的模块。必须 根据应用的具体需求实现设计模式。设计模式与软件体系结构的区别在于: 软件体系结构描述了各种各样的系统设计,并不限于面向对象系统,设计模式 目前主要研究面向对象系统。 体系结构主要集中于系统全局的构造( 构件类型、连接类型、规则和约束) ,设 计模式着重解决粒度更小的、更为具体的设计问题。 体系结构提供了更为精确( 形式化) 的描述语言,而设计模式的形式化研究刚刚 起步。 他们都强调设计的重用,有时把设计模式看成是小粒度的软件体系结构。 2 5 设计模式与软件框架关系研究 2 5 1 框架的概念 框架是一个可复用的、“半成品”的应用程序,通过对框架的定制可以产生满足客 户具体需求的应用程序0 7 1 。从用户使用的角度:用户通过定制框架形成满足他们具体 需求的软件,这个过程是简单的,复杂的内部结构必须对用户隐藏。从设计复用的角 度:框架完整地描述了一个领域内的设计概念,可以适合该领域内用户不同的需求。从 实现复用的角度:可以通过继承或者代理的方法来使用框架中的抽象类达到实现复用。 其优点有:模块化:可复用性;可扩张性;反向控制。 2 5 ,2 设计模式和框架的关系 目前,相当多的人把软件框架与设计模式混为一谈。其实,框架与模式都是来自多 个解决相关问题的应用,来自多个应用的实践经验,但软件框架与设计模式是一组不同 的概念,具有不同的含义。 1 2 大连理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 1120:2025 EN Conveyor belts - Determination of strength of mechanical fastenings for textile conveyor belts- Static test method
- 商场安全员培训课件
- 2025年汽车行业智能网联技术发展前景研究报告
- 2025年可再生能源行业可再生能源发电技术及市场前景研究报告
- 2025年风电行业风能利用技术发展前景研究报告
- 2025年电信通讯行业5G技术应用前景研究报告
- 2025年区块链行业区块链数字资产交易市场前景研究报告
- 定海区2025年浙江舟山市定海区环境卫生管理中心编外招聘2人笔试历年参考题库附带答案详解
- 大足区2025重庆大足区某机关事业单位招聘2人笔试历年参考题库附带答案详解
- 商品食品安全培训资料课件
- 离子检验-教案-
- GB/T 12643-2025机器人词汇
- Unit 5 Lesson 20 The Spring Festival Is Coming!(说课稿)-2024-2025学年冀教版(三起)英语五年级上册
- 智能悬架系统集成开发关键技术与实践-2024-12-技术资料
- 应用PDCA降低药占比
- 分包商安全管理规定(4篇)
- 超重与失重+说课高一上学期物理人教版(2019)必修第一册
- 公司收取管理费协议书范本
- JTS-165-6-2008滚装码头设计规范-PDF解密
- 设备维修与保养(课件)
- 医院培训课件:《和谐医患关系的建构与医疗纠纷的应对》
评论
0/150
提交评论