(计算机软件与理论专业论文)一种设计模式重用方法的研究.pdf_第1页
(计算机软件与理论专业论文)一种设计模式重用方法的研究.pdf_第2页
(计算机软件与理论专业论文)一种设计模式重用方法的研究.pdf_第3页
(计算机软件与理论专业论文)一种设计模式重用方法的研究.pdf_第4页
(计算机软件与理论专业论文)一种设计模式重用方法的研究.pdf_第5页
已阅读5页,还剩75页未读 继续免费阅读

(计算机软件与理论专业论文)一种设计模式重用方法的研究.pdf.pdf 免费下载

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

文档简介

一种设计模式重用方法的研究 摘要 设计模式重用方法的研究是一项十分重要的基础性和创新性的研究。它主要包括 新应用需求和设计模式的形式化描述、在模式库中找出一组包含新应用领域的模式的 可重用的设计、重用找出的设计模式和定制模式的验证入库等方面的研究,其中形式 化描述是基础,模式的可重用设计的选取是此方法的核心。 本文扩展了d i s c o 形式化描述语言,使其能很好地描述设计模式。并提出一种形 式化模式库检索方法:基于谓词匹配的设计模式选取算法,以拓展对这一领域的探索, 推动设计模式在软件设计中的重用。 本论文的工作主要包括以下几个方面: 对设计模式的本质和特征进行研究; 深入研究和分析d i s c o 形式化描述语言的背景和特点,研究将其应用于设计 模式的形式化描述的可行性和必要性,并对其进行扩展,使其适用于设计模 式的描述。 深入研究软件设计过程中设计模式的重用,并提出一种设计模式重用方法。 深入研究模式库的检索方法,给出一种形式化的模式库检索方法:基于谓词 匹配的设计模式选取算法,使设计者能快速方便地重用设计模式。 用实际的开发实例,在已有的模式工具上验证设计模式重用方法的有效性。 关键词:设计模式:形式化描述技术:d i s c o 语言i 模式库 安徽省自然科学基金资助项目项目编号:0 1 0 4 2 2 0 7 4 r e s e a r c ho nam e t h o do f d e s i g n p a t t e r nr e u s e a b s t r a c t t h es t u d yo fd e s i g n p a t t e r n r e u s em e t h o di sav e r yi m p o r t a n tf u n d a m e n t a la n d i n n o v a t i v es t u d y f o r m a l l yd e s c r i b i n gn e wa p p l i c a t i o nr e q u i r e m e n t sa n dd e s i g np a t t e r n , f i n d i n go u tag r o u po f r e u s a b l ed e s i g n sf i o mp a t t e r nb a s ei nw h i c hn e w a p p l i c a t i o nf i e l d s a r ei n c l u d e d ,r e u s i n gf o u n d d e s i g np a t t e r n sa n dv a l i d a t i n gc u s t o mp a t t e r n s ,e t c t h eb a s ei s f o r m a ld e s c r i p t i o n s ,a n dt h ec o r ei st h es e l e c t i o no f p a t t e r n s r e u s a b l ed e s i g n t h ed i s s e r t a t i o ne x t e n d sd i s c of o r m a ld e s c r i p t i o nl a n g u a g et o p r e c i s e l yd e s c r i b e d e s i g np a r e m af o r m a lr e t r i e v a lm e t h o df o rp a n e m b a s e am e t h o do fd e s i g np a r e m s e l e c t i o nb a s e do np r e d i c t i o nm a t c h i n g i sb m u g h tf o r w a r d w ee x p e c tt o e x t e n dt h e r e s e a r c hi nt h i s f i e l da n d p r o m o t e t h er e u s eo f d e s i g n p a t t e m i ns o f t w a r ed e s i g n t h i sd i s s e r t a t i o f ic o n s i s t so f s e v e r a l p a r t so f w o r k a sf o l l o w s : t os t u d yt h ee s s e n c ea n dc h a r a c t e r i s t i c so f d e s i g n p a t t e r n ; t os t u d ya n da n a l y z et h eb a c k g r o u n da n dc h a r a c t e r i s t i co fd i s c ot h o r o u g h l y , f i n d o u tt h en e c e s s i t ya n df e a s i b i l i t yo fa p p l y i n gd i s c oi nd e s i g np a t t e r nf o r m a l d e s c r i p t i o n ,e x t e n dd i s c o t om a k ei tu s e f u lf o rd e s i g np a r e m d e s c r i p t i o n t os t u d yt h er e u s eo f d e s i g np a t t e mi ns o f t w a r ed e s i g na n dp u tf o r w a r d am e t h o d o f d e s i g np a t t e r n r e u s e t os t u d yr e t r i e v a lm e t h o d sf o rp a t t e r nb a s e ,g i v eaf o r m a lr e t r i e v a lm e t h o df o r p a t t e m b a s e - am e t h o do f d e s i g np a t t e ms e l e c t i o nb a s e d o n p r e d i c t i o nm a t c h i n g t or e u s et h ed e s i g n p a t t e r n se a s i l y t ov a l i d a t et h ee f f e c t i v e n e s so f p a r e m r e u s eb a s e ds o f t w a r ed e s i g nm e t h o du s i n g e x i s t i n gp a t t e r nt o o l st h r o u g hp r a c t i c a lp r o j e c te x a m p l e k e yw o r d s :d e s i g np a t t e r n ;f o r m a ld e s c r i p t i o nt e c h n o l o g y ;d i s c ol a n g u a g e ;p a t t e r n b a s e t h ep r o j e c ts u p p o a e db y a n h u ip r o v i n c i a ln a t u r a ls c i e n c ef o u n d a t i o np r o j e c tn u m b e r :0 1 0 4 2 2 0 7 5 独创性声盟 本人声孵所呈燮的学往论文是本人在导舜指毒下避行的研究工作及取得的研究成果。攒我所 知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发袭或撰写过的研究成果, 龟不包含为获得 盒i 至壤盍堂或其德教育枫聿哿的学位或证书而使用过的材料。与我同 工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表永谢意。 学位论文作者签名:钟舍掺 签字誉辩:j p 鲜年嗣2 鑫 学位论文版权使用授权书 本学德论文作鬻完全了解佥篓篓墼盍堂有关傈裔、使用学位论文的舰定,膏粳傈留并向国 家有关部门或机构送交论文的复印件署b 磁盘,允许论文被查阅和借阅。本人授权盒8 b 王些太鬟可 戳将学位论文的全部或部分内容编入谢关数据痒进行检索,可戳采用影印、缩印或招播等复制手 段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本援校书) 学位论文作者签名:钟佥劳 箍字日期:o d 蜂年6 月上网 学往论文律者毕馥蒜去向: 工作单位:辔彳瓤寸。瞎 通讯地址:程太屹匿 幢2 0 牛甓 3 导师签名:委印多 签字日期物珂罐月。月 电话:f 岈i ) s l3 牛甲 稚编:”。毋5 致谢 值此论文完成之际,我要衷心感谢那些曾经给予我无私和真诚帮助的人们。 首先要感谢我的导师袁兆山教授,这篇论文是在他的悉心指导下才得以完成的。 多年来,袁老师在研究方向和研究方法上都对我进行了耐心细致的指导,他勤奋踏实 的工作态度、严谨的治学作风、积极的探索精神以及敏捷的思维方式等,都给我留下 了深刻的印象,也必将对我产生深远的影响,在此谨向袁老师表示崇高的敬意和衷心 的感谢。 胡学钢教授、李心科教授、李宏芒教授在我读研期间也给予很多热情和无私的帮 助,对我的研究方向和研究工作进行了认真的引导,在此表示深深的谢意。 向所有参与本论文送审、评审和答辩的老师致敬,感谢他们为本论文所付出的辛 勤劳动。 非常感谢课题组的方睿同学,在我的论文完成过程中,给予了很多真诚和无私的 帮助,使我能够顺利完成论文中的研究工作。 在读研期间,我有幸遇到了很多无私奉献、兢兢业业的老师,也结识了许多朝气 蓬勃,积极进取的同学,和她们一起学习和工作,受益匪浅。这里,我要特意感谢李 莹莹,费爱蓉、张国宁,王珏,朱晓春等同学在学习和研究工作中所给予的帮助和合 作。 最后,对我的家人在读研期间给予我的支持和关爱,表示深深的感谢,他们永远 都是我前进的动力和精神支柱。 6 钟金琴 2 0 0 4 年5 月 第一章绪论 1 1 课题背景及选题意义 软件设计指的是根据系统分析所得到的书面需求文件,设计出问题域的合 适解决方案,它是软件开发的重要组成部分。在近5 0 年的信息系统开发中,逐 渐形成了四种主要的设计方法: n o r 9 6 传统设计方法、结构化设计方法、信息 建模设计方法和面向对象设计方法。设计模式重用方法是一种应用于面向对象 设计的方法。 随着软件系统规模和复杂度的增加,每个软件开发都从头做起,会浪费很 多的资源,因此软件重用逐渐成为软件界追求的目标。但是,目前软件重用的 单位还主要是小粒度的软件代码,如用j b k ( j a v ab u s i n e s s k i t ,f u j i t s u , j a p a n ) ,e j b ( e n t e r p r i s ej a v a b e a n s ) 开发的b e a n s 等。为了提高软件的重用效 率、降低开发成本,软件专家引入了结构化、可重用的软件模式来捕捉并描述 软件业多年来成熟的软件知识和经验 b u s 9 9 】,使我们在不同的应用领域中,可 以开发出大粒度可重用的软件框架和组件,而不仅仅是简单地提供源代码。 r e l p bj o h s o n 等人提出了使用软件模式开发软件框架豹思想 r o b 9 7 ,但是他们 没有给出基于模式重用的软件分析与设计方法及其相应案例,本课题的研究就 是要在这一方面进行一些新的探索。 设计模式f g o f 9 5 1 是软件模式中的一种,是记录设计知识的一种特殊方式, 其目标是使那些在特定环境中良好工作的设计得以在相似的环境中被其他人再 一次的应用。1 9 9 5 年,g o f 的 - - 书成为设计模式方面的经典著作,为大家广泛接受并应用 于多个领域的软件构造和设计、开发、处理和组织中。近年来,随着对设计模 式研究的广泛开展,越来越多的设计模式被开发出来。但是传统的设计模式重 用方法是用户凭借对设计模式功能的了解和自身的设计经验,选取适当的设计模 式。为了使设计者更加简单地复用成功的设计和体系结构,设计出可重用的软 件,我们提出了设计模式重用方法的研究课题。 1 2 国内外研究现状 本课题的核心是要使设计者在设计中能自动地选取适合解决实际问题的 设计模式。要实现这一目标,首先就需要使用一种形式化的规范说明语言对问 题的需求和设计模式分别进行描述。目前国内外对设计模式的形式化描述方法 的研究主要有: b r o w n 在他的论文中对自动化设计模式检测和逆向工程设计过程进行了 研究。他开发出一套算法,通过这些算法可以检测出一系列的设计模式。 a l e n e a r 提出设计模式定义和应用的一种形式化方法 a 1 e n 9 5 。他使用抽 象数据视图a d v ( a b s t r a c t d a t a v i e w ) 和摘象数攒对象a d o ( a b s t r a c t d a t a o b j e c t ) 来描述一个模式的类方案。这种模式方寨被叫做模式构造器,它包含了a d v 、 a d o 蔽及它桶之阐的关系。这种方法缺菱将模式说臻袋一个设计组 串,模式接 口也没有涉及。 牵e d e ne ta 1 搀壅一静溷骰l e p u s 的形式纯谣言 e d e n 2 0 0 0 ,浚麓予设 模 式的规格说明和自动化应用。l e p u s 语裔形式化说明了模式中所使用的类以及 这些类之漓熬关系,毽它瞧没毒将模式说爨残一令设诗缝终。l e p u s 鞠形毯诞 号主要集中表现模式的内部,而不是模式与其它设计制晶的交互j a n b o s c h 认为, 设诗模式残该是绽程语言鑫身熬一个部分,选就是语蠢梅造俸。她摄蹬秽艨 次对象模型l a y o m ( l a y e r e do b j c o tm o d e l ) 语裔 j a n 9 6 】,支持设计模式的规格 说明。这种方法为通常的类定义蠼加了疆个层次,一个层用予结构方蕊,另一 层用于行为方面。两个层次之间通过接口彼此交互。这样一个例子的等价c 十+ 代码就是一个说明憋体模式的类,它没有解释瀵楚如傅在应用系统中胶合模式, 它只是集中在表示筚独的模式。 t o m m im i k k o n e n 也描述了一种设计模式形式化规格说明语言d i s c o 语言。 其形式证羹襁是行为酎态逻辑( t l a ) ,主豢翔来撰述交纛系统,两簸乏对系统结 构的描述。 由魏霹觅,毯有静设诗模式豹形式繇描述谬富豹圭簧袋煮簸是袋爱宠整瞧, 一般只对设计模式的某些方面进行深入。所以研究统一的完整的形式化描述语 言砖没诗援式重瘸方法瓣疆究是缀毒意义戆。 目前程软件设计中自动选取适合要解决问题的设计模式的研究尚处于起步 除段,但隧着模式的发展,各秘i d e s ( i n t e g r a t e dd e v e l o p m e n te n v i r o n m e n t s ) 和u m l 建模软件环境已开始为模式提供支持。如再工程工凝s u s ( s o f t w a r e u n d e r s t a n d i n g s y s t e m ,软l 牛理解系统) 【t h 9 9 4 】、软传开发环境f a c e ( f r a m e w o r k a d a p t i v ec o m p o s i t i o ne n v i r o n m e n t ,框架自适斑组合环境) 【m e 9 6 、s h u l l 的 b a c k d o o r 方法( 它主要针对一种从软件中恢复设计模式的系统化方式进行研 究) 以及横式囱鲁( p a t t e r nw i z a r d ,该方法通过元编獠技术获褥模式鹣鑫动纯 应用) r s o u 9 4 等。不同的工具对设计模式的自动化实现程度各不相同。见表1 1 : 自动化狸度描述 优点缺点 提供褥单静模辍存糖模式的结事先建好了手王定翻辩 如:u m l s t u d i o构化解决方案。在工 模式的结构,这求。 作平台上插入一缓稃颦班节终建搂 相关的类。时间。 参数健静攘叛在互捧平螽土集成类,这键入的类秘 如:t o g e t h e r j , 插入一组相关的类些兴来自予最新方法名可能会冗 m o d e l m a k e k之蔻,必类和方法名攒入的模式长,可钱会倒致锩 c o n g e n t提供对话框提示。 误。 智能模式己插入的娄作模式的集成当横型自动 如:m o d e l m a k e r为模式的一部分,能楚可以维护的,改变时,拜发者可 自动地、智能遗响应能会感到受到约 u m l 模型的其他部束,或麟到困惑。 分静改变。 扶表l 枣我们萄戳看爨这些工最能实凌模式撬簿鹃爨羲纯,氇裁蔻滋最终它 们能产生特定的类和方法。但它们并不能对设计者要解决的问题进行自动化实 褒,遣裁燕谨没诗罄键然要分橱阙题戆童下文势决定娶选择哪个模式来解决阏 题,所以作为设计者的程序员角色并不怒自动化的。因此,本课题的研究对设 计模式的广泛重用具有缀大意义。 1 3 课题的研究工作 设计模式重用方法就惩:角一种形式纯韵规范说鞠语言对闯题的需求进行 描述,然藤给出一聊模式自动选取方法,根据对需求的描述和模式自动选取方 法,系统鸯动扶横式库中选取适会静设诗模式,戳解决设计阉惩。为了实现这 一研究课题,我们围绕以下四个方面进行研究,主要内容如下: 1 、设诗模姣静本豢鬻耩锤涟行臻究。 要实现设计模式的自动重用,首先必须对设计模式非常了解。因此我们瑟 霹设计模式遗行学瑟和残究。我粕必矮骚知道镣一个设计模式懿意霞,动极, 适用性,结构,参与者,协作,效果,实现。必须对设计模式怎样解决设计问 题纛袋了瓣。 2 、对设计模式的形式化摘述语言进行研巍。 形式化描述语富是设计模式囊动选取蛉依搬。对形式化描述语吉的研究童 要怒对现肖的语言进行学习,了解其不髭及存在的问题,能撼出一种较好酌搞 述语富,可以解决当前形筑亿描述语言串的不足。 3 、设计模式自动选取方法的研究。 设计模式自动选取方法的研究是零课题静核心。由于设诗模式的蠡动遥鞭 尚处在起步阶段,当前自动选取方法的成果很少,所以我们只能借鉴其他一赋 系统酶鑫动选取方法,结合竣诗模式熬特点,鬟密稳帮霉亍豹蠢动选敬方法。 1 4 论文戆缳织续摅 本论文比较系统、完整的介绍和分析了设计模式,提出了一种基于d i s c o 的形式化撼述语富,鬟来罐述鬟求彝设谤模式,著绘爨设计模式的受旗选取方 法,使设计者在对设计模式不是非常熟憨的情况下,也能很好地选取模式以更 快雯好地完成系统设计。最后论述了在綦予设计模式的开发乎台中,利用设计 模式重用方法,怎样成功她完成了系统的设计。各章内容安排翔下: 第l 章绪论:简要介绍了本论文的课题背爨和意义,本课题国内外研究现 状,以及论文的主螫工作釉论文的组织结构。 第2 章设计模式:介绍设计模式的概念、然本要紧、怎样描述设计模式和 设计模式酌分类,并对某些模式送行详缀熊分辑。 第3 章d i s c o 形式化描述语宵和对d i s c o 谮吉的扩展:首先介绍彤式化描 述匏必要瞧,然鑫鬟捧说弱d i s c o 形式纯獾述港蠢熬语法、语义, 并给出标准的描述模拟。在此基础之上,对d i s c o 语言进行扩展, 鞋便予对没诗模式避露完整熄绉述,为设计模式蜘垂动选取努下基 础,并举例说明了一种典型的设计模式用扩展的d i s c o 语裔来描述, 第4 章设计模式重用方法;本章提如一秘农软件羚发过程中使用的设计模 式重用方法,给出了该方法的实旅步骤。其中设计模式豹自动选 取方法是该设计方法的核心,因而鬟点给出了一釉设计模式自动选 取的算法一一形式化蕊格梭索算法,使那臻对设计模式不太了解的 设计者也能程设计中方便地黧用成功的设计模式。 第5 1 t设诗模式重翊方法的应焉说鞠:这一章戳一令诞券交易舔垄系统歼 发为实例,详细地给出了其设计过獠,证明了设计模式重用方法的 有效戆。 第6 章总结。这一章对本论文的工作进行了回顾和总结,并且提出了一魑 震要遴一步磅窕秘霹惩。 4 第二章设计模式 2 1 软件模式 2 i 1 软件模式的来源 软件模式记录了解决软件领域常见问题的最佳方法。一般认为软件模式的 起源是受到了美国建筑专家c h r i s t o p h e r a l e x a n d e r 在城市规划和建筑架构方面实 践的启发。a l e x a n d e r 是美国加里福尼亚大学的建筑学知名教授,他和他的研究 小组花费了超过2 0 年的时间,开发了一种使用模式进行建筑设计的方法。可以 说,“模式”这个术语也被归功于a l e x a n d e r 的研究工作。a l e x a n d e r 在他的著作 建筑模式语言一城镇、建筑、构造、建筑的永恒之道、俄勒冈实验中全 面地阐述了模式理论。他想构造对人类有用的结构,提出了基于“质”、“门”、“道” 三个基本概念的体系结构模式 a l e 7 9 ,在他看来,建筑或城市只有踏上了永恒 之道,才会生机勃勃。所谓的“质”是有生命的、有用的事物的根本,即:生气, 完整,舒适,自由,无我,永恒等。而为了具备这些“质”,我们就必须建立一种 有活力的模式语言作为大门,一旦我们建成了大门,也就可以通过它进入到永 恒之道的实践中了。 由于软件工程界与a l e x a n d e r 的建筑界之间存在着惊人的相似性,使得他的 模式理论在软件界生根发芽。1 9 8 7 年,k e n tb e c k 和w a r dc u n n i n g h a m 首先将 模式思想引入软件界。他们在( u s i n gp a t t e r nl a n g u a g e sf o ro b j e e t - o r i e n t e d p r o g r a m s k e n t 8 7 一书中描述了模式应用的结果和思想。自此软件模式成为 近十年来软件工程领域中最活跃的研究方向之一,在软件模式的发展史中,有 三个重要的历史事件: 一 第一,“四人组g o f ”( e r i c h g a m m a ,r i c h a r d h 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 ) 合著的设计模式的出版,引起人们开始对软件模式的热情关注。 设计模式帮助人们超越个别的概念化设计关系,抓住微体系 ( m i c r o a r c h i t e c t u r e s ) 的重要结构以及评价对成功的解决方案进行革新的策 略。 第二,模式理论的创始人c h r i s t o p h e r a l e x a n d e r 在1 9 9 6 年 o o p s l a ( o b j e c t o r i e n t e dp r o g r a m s ,s y s t e m s ,l a n g u a g e sa n da p p l i c a t i o i l s ) 会议上的演讲,为软件模式朝着更深层次发展提供了新思路。 第三,一系列有关软件模式的国际会议( p a t t e r nl a n g u a g e o f p r o g r a m m i n g , p l o p ) 为有志于软件模式研究的软件人员广泛交流、集思广益、互相激励提供 了机会和条件。 2 1 2 模式酌分类 尽管国外对软件模式的研究已基本上覆盏了软件产品开发的各个过程。 密脊天试委对褒鸯静软俘模式逶行分类,僮至今还没富一个完整豹、统一静分 类方法。如r i e h l ez ul l i g h o v e n 按抽象程度的不同,将软件模式分成概念模式、 设诗模式耪镶程模式三类。f r a n kb u s c h m a n n 窝r e g i n em e u n i e r 等久垮软辫模式 分成体系结构模式、设计模式,翊惯用法( i d i o m s ) ,这是一个比较通用的分类 方法。【f r a n k 9 6 】 十体系缩构模式( a r c h i t e c t u r ep a t t e r n s ) :体系结构模式表达了软件系统 中戡摄本驰结构化组织或方案。窀提供了一套预定义的子系统,并指明了子系 统的职责,包括予系统之间的关联组织规刚。体系结构模式可作为具体软件体 系缨构的模板。它们规定一个应用的系统范围的结构特性,以及对其予系统的 体系结构施加的影响。掰潋体系缩构模式的选择是开发一个软件系统时的基本 设计决策。如:模越一视图一控制器( m o d e l v i e w c o n t r o l l e r ) 模式、管道和过 滤器( p i p e s a n df i l t e r s ) 模式、表示一抽象一控翻 ( p r e s e n t a t i o n - a b s t r a c t i o n c o n t r 0 1 ) 模式等。 $ 设诗模式( d e s i g np a t t e r n s ) :设计模式为子系统或子系统窝关联懿耱 确定义提供方案。它描述了在特定上下文中解决一般设计问题的通信予系统的 反复毽理豹逶援臻鞫,独嶷于具体懿编稷浯言。设 模式书攘述耱藩囱对象 设计模式都是这类设计模忒。 术代码模式( i d i o m s ) :也穆为馁用法,编糕模式。它是针对特定豹程序设 计语言,是一种具体程序设计语畜的底艨的模式,依赖于程序设计语言特定设 计技术。代码模式搂述了如何用蝓定的谣言来实现一个子系统或子系统阅关联 的巢个详细方面的问题。如:e + + 的句柄主体( h a n d l e b o d y ) 代码模式、c + + 的计数体( c o u n t e db o d y ) 代码模式等。 这三种穰式的区翱主娶在予它们处予不两的箍象藤次。体系结构模式是离 层抽象,关心大规模的组件或子系统、系统的全局特性和机制。设计模式具有 中等层次静籀象鞍凄,它宪善了予系统豹结稳帮行鸯戮及它稍之润戆关系,势 不影响整体系统的结构。惯用法模式是特定程序设计语言的技术,完善了组件 麴缨蓰或抒蕊懿赢瀑戆雨灏彝癸帮缨苓。 我们从上面也可以知道,除了这几种模式之外,还存在着多种多样的模式。 如:分提模式、测试模式。 分析模式( a n a l y s i sp a t t e r n ) :m a r t i nf o w l e r 将分析模式定义成“代液 业务建模中一个通用结构的成组的概念”。它是一组概念,代表业务建模过程中 的公共结构,可能只和一个问题领域有关,也可能扩展到其他的闻题领域a 它 关淀的是人们对业务的思考和认识,丽不是计算机系统的设计方法。如:货舔 模式( c u r r e n c yp a t t e r n s ) 、记账模式( a c c o u n t i n gp a t t e r n s ) 、一种实秘维 修的分析横式( a na n a l y s i sp a t t e r nf o rr e p a i ro fa ne n t i t y ) 。 软件测试模式( s o f t w a r et e s tp a t t e r n ) :软件测试模式描述了烂关于软 锌溯试方案静翻意、溅试数据静选择等方嚣静蠲蘧及篡解决方案。魏:k e i t h s t o b i e 在“测试结果处理( t e s tr e s u l th a n d l i n g ) ”中描述的软件测试模式有: 数箨驱魏数据( d a t a - d r i y e nd a t a ) 模式、鑫毽食数搀( s e l f c o n t a i n e dd a t a ) 模式、在线检查( i n l i n ec h e c k ) 模式等。 男步 模式在擐多领域中赘骞感翅,魄翔组织模式蟊避程搂式。 过程模式( p r o c e s sp a t t e r n s ) :描述了软件开发过程中的一套通用技术、 动捺积藏任务。由c o p l i e n 于1 9 9 5 年在健蛇文章“a g e n e r a t i v e d e v e l o p m e n t p r o c e s s p a t t e r nl a n g u a g e ”中掇蹬。进程模式一个重簧的特性 就怒它描述了应该做什么,丽不是怎样做。如:任务过程模式( t a s kp r o c e s s p a t t e r n s ) 、状态避程模式( p h a s ep r o c e s sp a t t e r n s ) 等a 女组织模式( o r g a n i z a t i o n a lp a t t e r n s ) :运用在不同的环境含义器不相同。 如j a m e s0 c o p l i e n 提出的组织模式静汇集 c o p e 9 4 b ,它粕擒述了怎样秀软锋 开发项目的管理构建组织和项目,以提供合适的支持。如w h i r l p o o lw a t c h ( 漩 涡麓察) 燕一秘邋遵露察搅动程度来揍逸需要落整豹黎橇稳襻瓣方法。逐鸯絮 构复审模式( a r c h i t e c t u r er e v i e w ) 、前端符号模式( f r o n t - e n d a l i g n m e n t ) 镣。 覆爱,我褒秀篱萃挺一下爱模式( a n t i p a t t e r n ) 。爱模式楚与攘式稳对立瓣 的概念,由s a ma d a m s 与a n d r e wd o e n i g 于1 9 9 5 年掇出,它是以模式的描述 形式寒记蒙失败黪教溯、受蘑豹效果( 不糍动铭数或具骞破螺性豹实践经验) 。 反模式是成功经验的影子,但并不是说每个模式都有它的反模式。反模式也可 能楚理解系统闯题的一个缀好诊颇工具。反模式向软 牛开发人员说明在设计过 程中如何避免设计陷阱,以及在碰到阔蹶时如何解决它。学习与应用反模式有 助予软件开发人员提高设计能力,是学习与应用软件模式的补充。目前,有两 类蔽模式:一类燕描述了一种失散静、释致糟糕局面豹闯越解决方案;另一类 是记录了如何摆脱不利的局面,并朝着磁确的解决方向继续前进。如:“过分动 态分配 n e w ,新建一个m o d e l 。 2 努嚣d e l p h i 7 ,关闭默诀匏工程文 串,薪黧一令u n i t 取名为w r a p p e r 。p a s , 将代码段填入w r a p p e r p a s ,最后保存之。 u n i tw r a p p e r ; i n t e r f a c e u s e sc l a s s e s ; t y p e t s a m p l e ;c l a s s ( t o b j e c t ) p r i v a t e f s o m e v a l u e :i n t e g e r ; p u b l i c f u n c t i o ns o m e a c t i o n ( c o n s td a t a :s t r i n g ) :b o o l e a n ; p r o p e r t ys o m e v a l u e :i n t e g e rr e a df s o m e v a l u e w r i t ef s o m e v a l u e ; e n d ; t s a m p l e w r a p p e r c l a s s ( t c o m p o n e n t ) p r i v a t e f s a m p l e :t s a m p l e ; p u b l i c p r o p e r t ys a m p l e :t s a m p t er e a df s a m p l e ; e n d ; 4 i m p l e m e n t a t i o n e n d 3 在d e l p h i 的i d e 中选择菜单项“m o d e l m a k e r ”一一 “a d df i l e st o m o d e l ”,出现“i m p o r tm u l t i p l e ”对话框,将第二步做的w r a p p e r p a s 从 左边i m p o r t 到右边,按0 k 按钮确定。如图2 - 1 所示: 图2 1 文件导入对话框 这时界面会切换到m o d e l m a k e r ,并且会弹出一个m e s s a g e 对话框确认已成 功地将d e l p h i 中的代码导入m o d e l m a k e r 中。如图2 2 所示: 图2 - 2 消息对话框 4 在m o d e l m a k e r 的c l a s s e sv i e w ( 按f 3 ) 中,选择包装类t s a m p l e w r a p p e r , 然后选择属性s a m p l e ,如图2 - 3 所示: 图2 3 类的选择配置 5 在m o d e l m a k e r 中选择“p a t t e r n s ”面板( 按s h i f t + f 7 ) 一一 选择 “s t r u c t u r a l ”面板中的第一个按钮“a p p l ew r a p p e rp a t t e r n ”,出现如下对 话框,选择所要w r a p 的成员,点击o k ,如图2 4 所示: 图2 4 应用模式 6 现在p a t t e r n 出现在p a t t e r n sv i e w 中,相应代码也已经生成。 7 点击“s a v em o d e l ”保存按钮( 按c t r l + s ) ,将当前工程保存为 w r a p p e r m p b 。 8 选择“u n i tv i e w ”( 按f 4 ) 一一 选择“u n i t ”面板上的“g e n e r a t e ”, 1 6 如聚这时出现类戗e r r o r ( 0 ) :c o d eg e n e r a t i o ni sm a n u a l l yl o c k e do rm o d e l i sr e a d o n l yi n 的错误提示,只需选择m o d e i m a k e r 主工具磷板上的u n l o c k c o d eg e n e r a t i o n 按镪,然螽褥选择按镪g e n e r a t e 藏行了。这薅点赘 m o d e l m a k e r 主工具条上的“l o c a t ei nd e l p h i ”那个熟悉的图标,看着d e l p h i 静w r a p p e r + p a s 璧发生了手 么? 对了,渊为我翻鑫魂警戒了缀多鼗鹞,这藏跫 w r a p p e r 模式的代码。 m o d e l m a k e r 豹簦黪纯不经表瑷在m o d e l m a k e r 王其提供了摸式夔肉导瑟活 框,而且可以维护模式的集成。被包装裟中的被包装成员所发生的任何变化都 会被p a t t e r n 爱反映。铡鲤:改变s o m e a c t i o n 方法鹣参数将会被反唳到被包装的 s o m e a c t i o n 方法。类引用名字的变化也会被反映:如果改变s a m p l e 成 t h e s a m p l e ,酆么瑟餐包装类相关代码都将被更薪。注意:多数诸如名称、 数攥类型等等包装类的成员属性不能手工改动,因为w r a p p e r 模式把包装类中的 成员与被戗装类的相应成员耦合在一起,因此啦一可以改变包装类中被包装成 员糯性的地方就是在被毽装了躬方法中。 如果于巴被包装成员从被包装炎中删除的话。它们也将会从包装类中被删除。 一定要意谈弱这盘将掰豫鄢些获敬被包装成员豹方法,繇爱麓您淘这撩方法审 添加了一毖自己的代码段。所以如果您鞭删除t s a m p l e s o m e a c t i o n ,那么模式 簪潮箨* 零s a 毽p l e 鞯r 8 p p e r s o m e a c t i o n j 亨法。 如果新的成员被加入到需要被包装的被包装类中,或您想解包( u n w r a p ) 一 些成员豹落,您戳选嚣“p a t t e r nv i e w ”孛爨要搡传的模式,双毒域点壹裹 键选取“e d i tp a t t e r n ”来进行操作。w r a p p e r 模式编辑器就会出现,你就可 以选择薮的被包装成员了。 如果您删除了w r a p p e r 模式戚者是对被包装部分的引用时,p a t t e r n 会删 除镪装类中所有鲍被包装成员。如果您删除了靓装类、被包装类或者对被包装 类的引用时,p a t t e r n 将变成“i n v a l i d ”非法( 邵无效) 状态,并且包装类中所 有的被包裟成员将被删除。 这些盘动纯软件工具,在一定程度上可以认为实现了模式的自动纯揉棒。 也就是说它们最终在u m l 工作区里创建详细的裳和方法。但它们不能自动的究 藏设计者匏考虑,设计者还是要分褥影桶帮主下文关系荐选取妥凌嗣豹模式。 应用u m l 标记进行面向对象设计和建模摄个复杂、严格次序的过程,专业的软 孛浚诗贯绥然要毽簿著蘧褥热嚣逶姿选择囱导瓣话框绘鑫懿选瑗。终灸设诗爨 的程序师的角色迸设有自幼化,尽管一魑工具融经做出了有助于这一过程了一 些帮助。攀实上劐嚣羲必史所接述熬王凝在 壬键时刻郝没套蛰代设计器决定模 式的选取。这些工县不能代替设计者需骚理解和清楚的怎么样以及他或她为什 么爨使用该特殊的模式。这些工具也没窍能代替设计者理解的涉及到不固解决 方案的变化的各个影响因素和协定的平衡问题。 不过,一旦设计者决定了所必 须的模式解决方案种类,则相应的模式自动化工具就能提供给他或她适度而仔 细的外围( s u r g e r y ) 帮助,这些帮助是实瓒模式解决方蹙过度到u m l 图表或源 代码瑟爨须静。 有一个非常现实问题摆在我们眼前,魑没有经验的设计者想要试图使用 某个自动化工具提供的模式模板来搭建一些体系,而这熙设计者没有真正的理 解模式程勰据嚣彝慰象分撰以及 烫圣中过程孛窭疆豹一些嚣索溪扮演熬健统( 一 般) 角甑,这时就存在一定的危除,这些设计者为了更好的嗣用他们豹模式自 动获取一具拥有的常规模式实现的益处而试图牵强附会的处理。( 曲解他们的 设计) 遮就有可能导致某个特定的模式实现只能执行8 0 的实际需要,丽设计者 藏 嚣还搜臻,嚣是莠薤憝节害辩阙。嚣莛模姣爨凄凭王爨必须垂鄂黧经受j 童模 式训练的设计者来使用。一旦模溅自动化工熊是由那些缀受过模式训练的设计 者所使用,则它将是个有用的工舆。当设计满意识到他们已经掌握模溅自动化 工具进撑模式设诗,褥且每次郝鼹够把握住搜用饱钠魇嚣黉抟特定模式豹实瑰, 翔模式窦动纯工具就能在稳建较佟中扮演越翱薰要豹角恕,尤其是当糟髓商导 和大型模式解决方寨仓库成为可能时。以给定的限制条件作为操作规则,如果 自动化工具提供了帮助你执行的工具,就去使用它。 器簿黠模式鑫动纯撬孬嚣一令重要豹争论,裁是当设谤过程毫经毒虑了设 计者环境的所有方方渐面的影响阂素,并且设计者改编了模式方案以滔应自己 的独特情形时,执行阶段将要涉及到一些相当独特的代码。模式自动化工具提 供的解决方案体系结构未必总是与设计者真照想要的想隧配,甚至予你考虑到 了该工鬃的特定震魏魄不行。获这秘意义上来说,要使蠡麓生或模式攮蔽与手 边的问题恰当准确的甄配起来在原理上总是失调的,手工制定解决方案可能总 是要更好些。 2 。2 6 耕究设计模式的意义 设计模式可以为软件设计带来很多好处: + 设计模式为开发者提供了好的设计经验,模式中所描述的解决方察是人们 获不藤惫疫霹一令弱趣逡行疆究,然嚣撂爨寒最逶矮、爨爱淫熬磐抉方案,英 有效性融经在很多设计中得到证实,其中蕴禽了有经验的程序员的设计经验。 将经过验证的技术袭述为模式可以使新系统的开发者更容易理解,并凰以过去 成功的开发以验指导强前的软件辩发,可避免传统上靠一次试验而导致的失误。 + 竣诗模式为瑷鞭之闯、稳澎燹之阕重瓣嚣囱对象戴褥提供一秘方矮鹣途 径,使得藿用成功设计和结构更加容易。每个模式都是软件设计中的w 重用元 素,一个熟悉设计模式的设计者w 以在其设计中直接应用模式,而无襦重新设 诗积秀发它 】。一个没鸯经验静糕彦员也霹倦麓予设计模式提毫设计零平。多 个模式可以组合起来构成完整的畚统,这种蒸予模式的设计具有更犬豹灵活性、 1 8 可扩展性和更好的可重用性,同时,基于模式的设计遥能够加快设计的速度, 并提高开发队伍的嫩产力箨珏软件的质量。 t 模式为程序爨提供了共同静词汇。强一个模式被颦出来,它就可以在程侉 员之间讨论,这使得程序员可以照好地合作和分享他们的智慧,也可以避免讨 论阕遥对豹竣义。 + 设计模式的基本思想是将程序中可能变化的部分岛不变的部分分离,尽凝 减少对象之润豹糕合,当菜些对象发生炎毒乏嚣,不会导薮其惩瓣象都发生变识。 为了实现这个目标,模式中一个常见的方法是襁类或对象间增加一个中间类域 对象,这榉擞妁结柒不仅使褥代辫更襄荔扩曩秘维护,瑟旦恣让程黪更褰易读 懂。 + 通过明确她袭述类秘对象蛉荚系和意璺,设计模式甚至可以改进现有系统 的文档和维护。可以说,设计模式帮助设计者更快更好地设计。 由此可见+ 对设计模式进行磷究是很有意义的。 2 2 7 经典设计模式概述 e r i c hg a m m a 簿久在设计模式:爵爱用面翔对象软件豹骜穑一书中剜巍 了2 3 种设计模式,这些设计模式已经在甄向对象的设计中被广泛

温馨提示

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

评论

0/150

提交评论