(计算机应用技术专业论文)设计模式在企业管理系统中的研究与应用.pdf_第1页
(计算机应用技术专业论文)设计模式在企业管理系统中的研究与应用.pdf_第2页
(计算机应用技术专业论文)设计模式在企业管理系统中的研究与应用.pdf_第3页
(计算机应用技术专业论文)设计模式在企业管理系统中的研究与应用.pdf_第4页
(计算机应用技术专业论文)设计模式在企业管理系统中的研究与应用.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(计算机应用技术专业论文)设计模式在企业管理系统中的研究与应用.pdf.pdf 免费下载

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

文档简介

大连理工大学硕士学位论文 摘要 设计模式记录已知的反复出现的问题,以及在特定上下文中对该问题的解决方案。 设计模式构成了强大的复用机制,在快速的需求变化面前,有利于解决软件的开发成本 高,质量不够理想,后期软件修改与维护困难、总体成功率不高等问题。 目前,国内外对设计模式的研究主要集中在形式化、特化、代码生成、采掘、组织 与检索等方面,国内对设计模式在企业管理系统中的应用研究刚刚起步。文中介绍了辽 宁某企业管理系统,并对该系统在体系结构、用户接口层和数据访问层所采用的设计模 式的关键技术展开研究与应用。针对系统采用的分层体系结构,基于l v i v c 模式设计了 可复用的基础框架类,用于组织协调模型、不同状态下的各个用户界面和控制器三者间 的交互,在控制器工厂的实现中使用了反射技术。在用户接口层,采用装饰模式和策略 模式分别为特定控件增加了新的功能:采用组合模式设计了便于树形控件维护和扩展的 统一接口;结合委托技术,采用观察者模式为长时间运行的任务设计了进度显示方案。 在数据访问层,采用抽象工厂模式设计了一系列灵活的数据访问类,其中使用反射技术 实现了工厂生成器;对于数据库连接等宝贵资源采用单件模式进行管理,避免了资源重 建和浪费:采用状态模式设计并实现了统一客户端时间的方案,将状态的切换封装在与 状态密切相关的内部类中,提高了复用性。 在企业管理系统开发中应用设计模式所获得的收益是显著的,应用设计模式解决具 体的设计问题的趋势是普遍的。设计模式给出的解决方案具有更好的复用性、可扩展性 和维护性,采用设计模式的应用系统更能满足这些非功能需求。 关键词:设计模式:企业管理系统;n e t 大连理工大学硕士学位论文 r e s e a r c ha n d a p p l i c a t i o no f d e s i g np a t t e r n si na ne n t e r p r i s em a n a g e m e n t s y s t e m a b s t r a c t : d e s i g np a t t e r n sa r eu s e dt od o c u m e n tg o o dd e s i g ns o l u t i o n st o ak n o w n , r e c u r r i n g p r o b l e mi nap a r t i c u l a rc o n t e x t , w h i c ha r ep o w e r f u lm e c h a n i s m sf o rr e u s e w i t i lt h er a p i d c h a n g e si nr e q u i r e m e n t s d e s i g np a t t e r n sf a c i l i t a t et o s o l v es u c hp r o b l e m sa sh i g hc o s to f s o f t w a r e d e v e l o p m e n t , u n s a t i s f a c t o r yq u a l i t i e s ,d i f f i c u l t i e s i n p o s t m o d i f i c a t i o no r m a i n t e n a n c e ,a n dl o w s r i c c e s sr a t ea n ds oo n a tp r e s e n t ,r e s e a r c ho fd e s i g np a r e m sm a i n l yc o n c e n t r a t e so nt h ef o r m a l i z a t i o na n d s p e c i a l i z a t i o n , c o d eg e n e r a t i o n , m i n i n g ,o r g a n i z a t i o na n dr e t r i e v a la th o m ea n d a b r o a d r e s e a r c ho fd e s i g np a t t e r n s a p p l i c a t i o ni ne n t e r p r i s em a n a g e m e n ts y s t e mh a sj u s tb e g u na t h o m e i nt h i st h e s i s ,a ne n t e r p r i s em a n a g e m e n ts y s t e mi nl i a o n i n gp r o v i n c ei si n t r o d u c e d , a n dt h ek e yt e c h n o l o g yi sr e s e a r c h e da n da p p l i e dw h i c hi su s e di na r c h i t e c t u r e u s e fi n t e r f a c e l a y e ra n dd a t aa c c e s sl a y e r t h es y s t e mi so r g 砒_ e di nl a y e r e da r c h i t e c t u r e a n dar e u s a b l e f o u n d a t i o nf r a m e w o r ki sd e s i g n e db a s e do nt h em v c p a t t e r nf o ro r g a n i z i n ga n dc o o r d i n a t i n g t h ei n t e r a c t i o n sa m o n gm o d e l s v a r i o u su s e fi n t e r f a c e su n d e rd i f f e r e n tc o n d i t i o n sa n d c o n t r o l l e r s r e f l e c t i o nt e c h n o l o g yi su s e di ni m p l e m e n t a t i o no fc o n t r o l l e rf a c t o r y i nu $ e t i n t e r f a c el a y e r , n e wf u n c t i o n sa l ea d d e dt 0s p e c i f i cc o n t r o lr e s p e c t i v e l yw i t hd e c o r a t o ra n d s t r a t e g yp a t t e r n d e s i g na n di m p l e m e n t a t i o no fau n i f i e di n t e r f a c et ot r e ec o n 订o lm a k e si t e a s yt om a i n t a i na n de x t e n d 、砸也c o m p o s i t ep a t t e r n c o m b i n i n gd e l e g a t i o nt e c h n o l o g y a s o l m i o nt 0s h o ws c h e d u l ef o ral o n gt i m et a s ki sd e s i n g n e d 诵t l lo b s e r v e rp a t t e r n i nd a t a a c c e s sl a y e r , f l e x i b l ed a t aa c 4 笼s sc l a s s e sa r ed e s i g n e dw i t ha b s t r a c tf a c t o r yp a t t e m r e f l e c t i o n t e c h n o l o g y i su s e di nt h ei m p l e m e n t a t i o no ff a c t o r yb u i l d e r s u c hv a l u a b l er e s o u r c ea s d a t a b a s ec o n n e c t i o ni sm a n a g e dw i t l ls i n g l e t o np a t t e r na v o i d i n gw a s t eo fr e s o u r c ea n d r e c o n s t n a c t i o n as o l u t i o nt 0u n i f y i n gc l i e n tt i m ei sd e s i g n e da n di m p l e m e n t e dw i t hs t a t e p a t t e r nb ye n c a p s u l a t i n gt h es w i t c h i n g s t a t e si ni n n e rc l a s s e sr e l a t e dt os t a t e sa n dr e u s a b i l i t yi s i m p r o v e d i nt h ed e v e l o p m e n to fe n t e r p r i s em a n a g e m e n ts y s t e m , d e s i g np a r e m sh a v eb r o u g h t s i g n i f i c a n tb e n e f i t s 1 1 砖s o l u t i o n sg i v e nb yd e s i g np a t t e r n sh a v eb e t t e rr e u s a b i l i t y e x t e n s i b i l i t ya n dm a i n t a i n a b i l i t y 1 1 l et r e n do f u s i n gd e s i g np a t t e r n st oa d d r e s ss p e c i f i cd e s i g n p r o b l e m si su n i v e r s a l w h i c hc a l lm e e tn o n - f u n c t i o n a lr e q u i r e m e n t sa l la b o v e k e yw o r d s :d e s i g np a t t e r n s :e n t e r p r i s em a n a g e m e t t ts y s t e m :n e t - i i i 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工 作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理 工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志 对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。 作者签名:1 2 蠲i ! t 势1 :2 盟;! 盈y 廖 大连理工大学硕士研究生学位论文 大连理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用 规定”,同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论 文。 作者签名:! 望翌! 导师签名祁仁 竺生】年月旦日 大连理工大学硕士学位论文 1 绪论 1 1 论文的研究背景 随着当前企业管理系统的快速发展,企业界越来越认识到软件在企业日常运作中所 发挥的重要作用,这进一步加强了企业对软件的依赖。随着对软件的需求越来越高,企 业管理系统产品化趋势逐渐上升,传统的软件开发方法面临挑战,具体表现为:开发进 度难以控制、工作量难于准确估计、软件成本居高不下、交付后的软件质量不够理想、 后期软件修改与维护困难、软件成功率不高。 作者先后参与过某环保局办公自动化系统、某检疫局出入境检验检疫系统和辽宁某 企业经营管理系统。在这些项目开发之前,这些企事业单位均有已经投入运行的系统, 这些系统大多已成功运行了三至五年以上。尽管这些系统开发时投入了大量的财力,但 为了满足企事业目前的发展要求,系统的改进和扩展是必须的,但要在这些原有项目的 基础上扩展就显得困难重重。主要表现就是传统的软件开发方法开发出的软件复用性 差,可维护和可扩展性差。 为解决软件开发中存在的诸多问题,软件工作者很早就开始对软件开发方法与过程 进行研究与探索,试图通过分解软件,降低软件的构造难度,以控制软件构造的复杂度。 其中一些具有里程碑意义的进展包括【l 翻: 2 0 世纪6 0 年代末至7 0 年代中期,在一系列高级语言应用的基础上,出现了结构化程 序设计技术,并开发了一些支持软件开发的工具。 2 0 世纪7 0 年代中期至8 0 年代,计算机辅助软件工程( c a s e ) 成为研究热点,并开发了 一些对软件技术发展具有深远影响的软件工程环境。 2 0 世纪8 0 年代中期至9 0 年代,出现了面向对象语言和方法,并成为主流的软件开发 技术;开展软件过程及软件过程改善的研究;注重软件复用和软件构件技术的研究与实 践。 与此同时,随着社会信息化迅速发展,企业管理系统越来越广泛,规模越来越大, 需求越来越多,系统日益复杂。同时,我们不难发现现在的计算机软件系统存在以下的 事实: 。 ( 1 ) 少量的计算机软件系统是全新的,大多数是一个基本系统的变种。或者说,在 同一领域内的软件在很大程度上都属于由不同团队开发出来的相似的系统。即使在不同 的领域中运行的软件系统也有一定的重叠。笔者先后参与的项目与这些项目所在单位的 旧有系统就存在这种情况。 设计模式在企业管理系统中的研究与应用 ( 2 ) 重复或部分重复地构造一个同类系统的费用是昂贵的,这是工程领域的普遍问 题,但它在软件工程中尤为突出。旧有系统的复用性差直接导致了新项目的部分重复构 造。 ( 3 ) 解决“新”问题的现有方法通常有多个,可以利用以前的类似问题的成功方案, 也可以使用一个全新的方案。如果不注意收集和利用己有的成功方案或者出于其它目 的,很多团队会采用后者。本文参与的项目就仔细考虑了系统的后期扩展和改进,提高 了新项目的复用性,增强了可扩展性。这一方面得益于所采用的成熟的面向对象技术, 设计了良好的接口和可复用的模块儿,另一方面得益于灵活地采用了软件专家多年的软 件系统构造经验设计模式一这一优雅的解决方案。 虽然软件复用技术是解决以上问题的有效途径之一,而且软件复用方法己从原先的 代码复用发展到了软件方案的复用,人们已经可以对软件开发过程中的各个阶段进行复 用。然而,随着软件系统规模的扩大和复杂性的增加,在软件设计过程中人们所面临的 问题已不仅仅是考虑软件系统的功能问题,而是面临要解决更难处理的非功能性需求, 如系统性能、可适应性、可靠性、可移植性、可维护性等需求,不幸的是,传统的分析 与设计只把注意力集中在功能需求上,而忽略了非功能性的需求。最近软件工程领域的 热门课题“设计模式”正是为了有效地解决此类软件复用问题。设计模式是人们在 长期的软件开发实践中,总结出了一些解决特定问题的有效方法,并加以总结提炼,在 碰到类似问题时,就可以直接复用以前的方法。因此,为了解决企业管理系统中的非功 能性需求,促进企业管理系统的产品化,设计模式在企业管理系统中的研究及应用正越 来越受到人们的重视,而且也是非常紧迫必要的。 1 2 研究的目的和意义 设计模式是与技术无关的针对特定上下文中重复出现的问题的解决方案,提取出各 种设计模式的人所处的领域可能是不同的,看似相同的上下文,在不同的领域中对设计 模式的应用也会有所不同。探索企业系统中的设计模式,对企业系统的设计有理论上的 意义。 根据中国国家企业网撰文,我国企业管理现状呈以下特点:管理不规范,随意性强; 企业缺乏长远的战略目标。企业的管理系统正是在这样的环境下开发的。系统开发之初 确定的需求尚能满足企业当时的需要,但随着系统开发的进展,往往事与愿违,企业的 需求在变化,系统只能被迫做出修改,但未必能完全符合变化了的需求。最终企业投入 了大量的财力,得到的却是并不完全符合目前需求的系统。而这样的系统,在进一步的 扩展时也会遇到相当大的阻力,甚至不能完成。笔者所参与的项目之所以没有直接对原 大连理工大学硕士学位论文 有项目进行修改,主要原因就是为了避免这种后果。这种决策是在对旧有系统和新的需 求进行了详细而充分的分析之后做出的。新构建的系统将充分考虑将来需求的变化,系 统的扩展性和复用性,以免重蹈覆辙。 设计模式强调面向接口编程,而不是面向实现,力求降低耦合度,增强灵活性。灵 活性能够使得企业管理系统在一定程度上可扩展,为企业的需求变化提供了系统扩展的 可能。所以说,在企业管理系统中研究与应用设计模式对促进企业管理系统软件产业的 发展有着深远的意义和实际应用价值。本文不仅对已参与项目中设计模式作了回顾式总 结,也愿为将来的企业管理系统构建提供建议和模式。 设计模式是从解决具体问题抽象出来的,这种具体问题在特定的上下文中重复出 现。也就说,每个具体模式都对应一种重复出现的问题的解决方案。当然,设计模式不 仅仅是解决方案,一个设计模式是环境、问题、解决方案的统一体,是针对反复出现的 问题的,它来源于成功的经验。模式是高度抽象的,它捕捉的是成功解决方案中的结构 精华,而不是具体的技术细节。设计模式通过明确对象、对象间的协作和职责分配,捕 捉到了隐藏在设计背后的意图。 设计模式使设计人员可以更加简单方便地改进和复用已往成功的设计和体系结构, 将己被实践证明的技术表示成设计模式也会使新的系统开发者更加容易理解其设计思 路。 设计模式不仅仅为设计人员提供了指导,并且提供了一套交流的语言。我们在讨论 时,就不用说“这个类中的一个方法调用了一个虚函数,这个虚函数在子类中实现”这 样的话了。只要告诉对方,“我采用模板方法模式设计”已足够。这样不仅使交流语言 更简洁,也更标准并精确,能够非常确切地表达自己的意思。 因此,在企业管理系统开发中,根据过去成功系统的经验,得出一些简洁而优雅的 解决方案;提取各种行业的共同特点,形成各种领域软件架构。结合两者形成企业管理 系统专用的设计模式,并且分类形成各种企业管理系统模式,就能在以后的企业管理系 统开发中,根据领域特点选择合适的模式,来分析和设计系统。 在企业管理系统中开展设计模式的研究,可以解决企业管理系统开发中现存的许多 问题,人们可以更简单方便的复用成功的设计和体系结构。既提高了软件复用的程度, 又便于开发人员之间的交流,还进一步保证了系统的稳定性、灵活性。基于设计模式开 发将是企业管理系统的发展趋势。 设计模式有其经典的实现方式。同时在不同的开发平台上,设计模式的实现如果引 入平台新机制,可能会改变实现方式。结合在具体的企业管理系统中,设计模式的实现 又会有新的变化。 设计模式在企业管理系统中的研究与应用 本文的目的就是充分运用n e t 开发平台引入的新机制,在企业管理系统中正确使 用设计模式。 同时还具有以下几点意义: ( 1 ) 可促进企业管理系统软件生产的工程化。设计模式是为软件工程提供类似于其 他工程领域的设计手册迈出的第一步,它列举出软件设计的基本部分,并做出详尽的阐 述。 ( 2 ) 提高企业管理系统软件设计质量。复用设计模式可提高软件在可适应性、可靠 性、可扩展性等方面的设计质量,可保证软件朝着特定的方向稳定的演化。 ( 3 ) 设计模式便于软件开发团体内部以及开发团体之间的沟通。由于设计模式有明 确的名称、环境,以及相应的解决方案,并且都有相应的明确的含义,所以便于沟通与 交流。 ( 4 ) 模式可提高对新手进行培训的效率,让新加入的队员尽快了解设计意图与策略。 ( 5 ) 设计模式也是解决企业管理系统设计具体问题的有效方法,对企业管理系统产 品化、重构和升级提供了强有力的支持。 因此,对企业管理系统中设计模式的研究可以提高企业管理系统的适应性、可扩展 性。 1 3 国内外研究现状 设计模式的研究历史不到十年,是一个新兴的研究领域,同时也是一个热点研究领 域。国外从9 0 年代初就有人开始关注软件代码模式。白g o f ( g a n g o f - f o u r , 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 s o n , j o h nv l i s s i d e s ,四人组) 的设计模式问世,引起了国外软 件工程界对设计模式的极大关注。此后,设计模式成了软件工程领域中的热门研究课题。 目前,国外软件工程界正把设计模式应用于软件体系结构、设计、编码和软件开发的过 程和组织等,其理论成果主要体现在从1 9 9 4 年开始的“程序设计模式语言( p a t t e r nl a n g - 1 a g e so f p r o g r a m m i n g ,p l o p ) ”年会论文集中。国内对于设计模式基本从1 9 9 6 年才开始 了解,对设计模式的研究也就最近几年才开始,设计模式在企业管理系统中的研究及运 用刚刚起步。 目前对设计模式的研究及其研究成果仍然存在一些问题:已有的设计模式涉及的范 围有限;设计模式大多没有清楚明确的应用指南,比较难以运用,而且也没有任何可以 帮助开发人员检查模式使用是否正确的机制:设计模式中本质、抽象的东西太少等等。 针对以上问题,目前对于设计模式的研究工作主要集中在以下几个方面: ( 1 ) 设计模式的形式化学术界对于设计模式的形式化有争论。形式化的支持者认 大连理工大学硕士学位论文 为:形式化允许更准确的模式描述,特别是关于它们的结构、动态性和具体语义1 3 1 。国 外已经提出了很多关于设计模式结构的描述方法。一般分两类:图示化方法,如 o m t ( o b j e c tm o d e l i n gt e c h n o l o g y ,对象建模技术) ;形式化数学表示法。目前的研究趋 势是这两类方法逐步靠拢。国内也对设计模式形式化做了一定的研究,并且结合了新技 术,如:基于u m l ( u n i f i e dm o d e l i n gl a n g u a g e ,统一建模语言) 的设计模式描述技术f 4 】, 基于x m l ( e x t e n s i b l em a r k u pl a n g u a g e ,可扩展标记语言) 的设计模式描述和复用【5 】,混 合规范描述模型1 6 j 等。还有很多软件开发者不同意这些论点,他们认为:问题通常不是 形式化的,形式化的问题描述不利于一种模式与一种具体的设计问题相匹配,形式化的 解决方案很难抓住设计模式的关键思想,并且无助于创建有效的变体,形式化可能使得 模式太概括而不能使用。 ( 2 ) 设计模式的特化设计模式是设计专家的经验总结,具有通用性。虽然也有特 定领域的设计模式,但通常情况下,在某个特定领域使用设计模式时,还需要对设计模 式进行特化处理,以满足特定的需求。所以特化设计模式来适应具体设计问题也是当前 研究的热点之一。文献【7 】通过引入特化类,用具体方法代替虚拟方法,有助于消除了设 计模式由于使用虚拟调用而带来的额外开销。文献 8 则从结构、关系、和约束三个方面 对模式之间的特化关系进行了探讨,并提出了将模式具体化的方法。 ( 3 ) 设计模式到代码的生成目前设计模式使用自动化和设计模式支持工具的研究 也是一个热点。文献9 ,1 0 都采用了参数化的方法,通过和用户交互,让用户给出设计 模式中各个参与者的名称,对必要的利弊条件进行定制,最后由工具生成代码。这也是 从设计模式到代码生成中普遍采纳的方法。文献 1 l 】对模式自动化软件的使用情况进行 了介绍,并讨论了模式到代码自动化的利弊,指出模式自动化软件应该在代码维护、自 我保护和模式标识方面提供便利,而不仅仅是提供模式方案。 ( 4 ) 设计模式的采掘国际一些非盈利组织每年都举办一些与模式有关的会议,如 p l o p 、e c o o p - ( e u r o p e a nc o n f e r e n c eo no b j e c t o r i e n t e dp r o g r a m m i n g 。欧洲面向对象编程 大会) 等学术会议对设计模式进行讨论,据权威统计,目前软件界己经总结出来7 0 0 多种 不同的设计模式,人们正在各个领域总结设计模式,如通信领域、w e b 开发领域。设计 模式与其他面向对象技术的关系也是当前研究的热点。从源代码中识别模式实例也有利 于模式在源代码中的管理和演化,文献 1 2 】提出了一种通过模式匹配在c + + 源代码中识 别模式实例的方法;文献 1 3 】贝u 通过引入机器学习提高了在c + + 源代码中识别模式实例 的精确度。 ( 5 ) 设计模式的组织与检索随着模式数量的增加,人们认识到在浩瀚的模式海洋 中寻找到一种可恰当使用的模式并非易事。以g o f 的模式目录作为组织与检索的方式是 一5 一 设计模式在企业管理系统中的研究与应用 最早使用也是最广泛使用的组织与检索方式。虽然,目前业界对设计模式的正确使用主 要还是依赖于设计和编程人员对设计模式的理解和熟练运用程度,但人们也探索了新的 方法来重新组织和检索设计模式,以便于对设计模式的高效运用。通过模式之间的特化 关系,把模式组织成树形结构存储在模式库中,越靠近树根通用性越强,越靠近叶子模 式越具体,越特化,有利于设计模式的出入库检索算法,在语义、结构、目标和约束等 方面对模式的相似性进行度量。 总之,设计模式是一个既新颖又长久的研究方向,随着企业管理系统的迅速发展和 产品化,在我国对设计模式的研究正方兴未艾,为以后全面的发展做准备。基于设计模 式的企业管理系统的研究,可以解决企业管理系统设计开发中现存的许多问题,人们可 以更简单方便的复用成功的设计和体系结构,在模式库建立后,开发人员的设计思路将 走上一条全新的基于设计模式的企业管理系统开发之路。 1 4 主要研究内容 本文结合面向对象方法学、设计模式、软件重用等技术以及n e t 的新机制,主要研 究设计模式在企业管理系统中的应用,各章的内容如下: 第一章概述了设计模式的国内外研究现状。介绍了设计模式在形式化、特化、代码 生成、采掘、组织与检索等方面国内外取得的主要研究成果。 第二章阐述了设计模式与面向对象理论。主要包括:设计模式的概念、描述形式和 要素,设计模式与面向对象的原则,设计模式的分类方法。 第三章论述了n e t 开发平台弓l 入的新机制以及这些薪机制对实现设计模式的影响。 第四章研究了企业管理系统中具体使用到的几种设计模式。这些设计模式分布在企 业管理系统中的不同层。主要包括:用户接口层的装饰模式、策略模式、组合模式、观 察者模式和m v c 模式,数据访问层的抽象工厂模式、单件模式、状态模式。同时又把 m v c 模式作为一种框架提起出来。 第五章实现了在n e t 平台下,企业管理系统中,针对具体问题,运用n e t 的新机 制恰当的简化设计模式。 大连理工大学硕士学位论文 2 设计模式与面向对象理论研究 设计模式并不只出现在面向对象的系统中,因此设计模式本身并不局限于面向对象 设计的范畴,也不局限于菜一种编程语言。但鉴于面向对象技术的成熟和广泛应用以及 本文所在的项目小组的实际情况,本文中的设计模式仅限于面向对象的设计模式。 2 0 世纪6 0 年代爆发了“软件危机”,采用传统的软件开发方法往往导致软件质量差, 可靠性不能得到保证,软件成本增长居高不下,软件的开发进度难以控制,软件开发周 期长,维护困难,维护费用不断增加。这些弱点逐渐被人们认识到,并开始寻找新的软 件开发方法。面向对象的软件开发方法首先提出于2 0 世纪6 0 年代后期,之后经过了几乎 2 0 年的时间,对象技术开始得到广泛应用。在2 0 世纪9 0 年代,面向对象软件工程成为了 很多开发软件产品及信息系统首选的软件开发技术和方法【1 4 】。对象技术导致了复用,而 程序构件的复用又导致了更快的软件开发和高质量的程序。复用为解决“软件危机”提 供了一种有效的途径。 但是,人们也认识到要设计面向对象的软件是比较困难的,要设计可以复用的面向 对象的软件就更加困难。而面向对象软件的设计专家在几十年的设计工作中已经积累了 相当多的设计经验,如果能在后续的面向对象的软件设计中充分利用这些设计经验,将 有助于人们设计出好的甚至是可以良好复用的面向对象的软件系统。幸运的是,设计模 式能够帮助软件工作者,它是被记录下来的面向对象的软件设计经验,这些设计已被证 实是优雅的,成功的和易于复用的。 2 1 设计模式及相关描述 以规范形式记录设计知识可以追溯到建筑大师c h r i s t o p h c ra l e x a n d e r 。他在建筑学领 域率先提出了模式的概念。他的著作建筑的永恒之道说明了如何将模式应用到房屋 构建以及邻近地区和整个城市的规划之中。也正是该著作给软件工作者带来了软件界设 计模式的灵感。 第一本出版的关于在软件开发过程中使用模式的著作是e r i c hg a m m a 于1 9 9 1 年写的 博士论文。e r i c hg a m m a 、r i c h a r dh e l i n 、r a l p hj o h n s o n 和j o b l lv l i s s i d e 争被称为模式团 体的“四人组”( g a n g - o f - f o l l 咖一于1 9 9 5 年完成了模式方面的开山之作d e s i g n p a t t e r n s - - - e l e m e n t so f r e u s a b l eo b j e c t - o r i e n t e ds o f t w a r e 。设计模式成为了软件研究的 热点之一,越来越多的人和团体投入到模式的研究之中。 2 1 1 设计模式的概念 关于设计模式的定义有很多种,本文仅列出了几个具有代表性的、权威性的定义: 设计模式在企业管理系统中的研究与应用 定义1 a l e x a n d e r 给出的经典定义是:每一个模式描述了一个在我们周围不断重复 发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而 不必做重复劳动【”l 。 定义2 g o f 的设计模式中这样描述:设计模式是对被用来在特定场景下解决 一般设计问题的类和相互通信的对象的描述。这是面向对象的设计模式,也是本文研究 的对象。尽管设计模式不限于面向对象,不限于设计阶段,甚至不限于软件开发领域, 但说明这一点是必要的。 定义3 模式是被命名的有组织的信息,它捕获了在一定语境( 场景) 中包含相关作用 力的问题的解决方案的本质结构和内在含义,这种解决方案被证明是成功的。这样的定 义包含三部分:相关的上下文、与上下文相关的作用力系统和解决问题的方案【i6 1 。从模 式的这个定义可以看出,只有相关上下文和各种作用力完全符合时,模式中的解决方案 才是最优的方案。也就是说,模式是一种在权衡了各种利弊后的解决方案,一旦作用力 之间的平衡被打破,这个解决方案就可能不再成立。 定义4 设计模式提供一个用于细化软件系统的子系统或组件,或它们之间关系的 图式。它描述通用组件的公共再现结构,通用组件可以解决特定语境中的一个一般设计 问题。设计模式是中等规模的模式。它们在规模上比体系结构模式小,但又独立于特定 编程语言和范例。 2 1 2 设计模式的描述形式 模式团体的非官方组织h i l l s i d e 向人们推荐了三种设计模式的描述形式,分别被称 为d o u gl e a 的h u n l 模板、g o f 的模板和a g 的h t m l 模板。本文主要给出g o f 的模板 式的设计模式描述形式。u m l 是软件建模事实上的标准,可以预见到它将成为软件界 的主流语言【i ”,在结构部分常采用u m l 中的类图和交互图表示。 ( 1 ) 模式名称和分类模式名称简洁的描述了模式的本质。一个好的名字非常重要, 因为它将成为你的设计词汇表中的一部分。 ( 2 ) 意图是回答下列问题的简单陈述:设计模式是做什么的,它的基本原理和意 图是什么,待解决的是什么样的特定的设计问题。 0 ) 别名描述模式的其他易于为人理解的别名。 ( 4 ) 动机用以说明一个设计问题以及如何用设计模式中的类,对象来解决特定场 景中的问题。该场景有助于帮助人们理解随后对模式更抽象地描述。 ( 5 ) 适用性描述什么情况下可以应用本设计模式,可以解决哪些问题,以及该模 式可以改进哪些不良设计,怎样识别这些情况。 大连理工大学硕士学位论文 ( 6 ) 结构用图形表示模式中的类及它们之间的关系。常用统一建模语言( i r m 0 中 的类图( 和或对象图) 表示模式中的类( 和或对象) 及它们z 间的关系,交互图表示模式 中对象之间的请求序列和协作关系。 ( 7 ) 参与者描述模式中的类和或对象,以及所扮演f 角色及责任。 ( 8 ) 协作描述参与者如何协作以完成它们的责任。 ( 9 ) 效果描述应用模式可以达到什么效果,应用时i :做哪些权衡取舍和决策,系 统结构的哪些方面可以独立的改变。 ( 1 0 ) 实现描述实现模式时应避免的陷阱、需要知道j 提示和技术问题,以及是否 存在某些特定于实现语言的问题。 ( ) 代码实例一般以动机中提出的问题为例,给出漠式实现的例子代码。 ( 1 2 ) 己知的应用例子本模式己被成功应用的例子介绍。 0 3 ) 相关模式描述本模式可以与哪些模式搭配使用以及它们之闯的重要不同之 处。 遵照一定的格式描述模式,有助于模式的收集、共享和传播。同时也有助于人们更 好的学习、比较和使用设计模式。 2 1 3 设计模式的要素 一般而言,一个模式有四个基本要素。 ( 1 ) 模式名称( p a t t e r nn a m e ) 一个助记名,它用一两个词来描述模式的问题、解决 方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽 象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在 编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设 计结果。找到恰当的模式名也是我们设计模式编目- i - 作的难点之一。 ( 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 ) 描述了模式应用的效果及使用模式应权衡的问题。尽管我 9 一 设计模式在企业管理系统中的研究与应用 们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的 代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言 和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活 性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。 2 2 设计模式与面向对象 本文中的设计模式是指面向对象系统中的设计模式,是面向对象软件设计专家的设 计经验,是已经被证实了的面向对象领域特定场景下一再重复发生的问题的优雅的解决 方案,是可以良好复用的面向对象的软件设计中的组成部分。面向对象的一系列设计原 则,在设计模式中均得到了很好的体现。传统的面向对象的设计扩大了继承的作用,过 分的使用了继承,而继承常常被认为是破坏了封装性【l s l 。设计模式更注重使用组合机制, 在已有的可用构件集合不能满足新的需要时才考虑使用继承。 2 2 1 面向对象的设计原则 在进行面向对象的设计过程中,人们总结了许多经验和原则。文献 1 9 1 中论述了以 下1 l 条面向对象的设计原则,前5 条总结了类和接口的设计原则,后6 条描述了包的设计 原则: ( 1 ) 单一职责原则就一个类而言,应该仅有一个引起它变化的原因。 类的职责体现在类的接口中,也就是说体现在类对外公开可用的操作中。这些所有 对外公开可用的操作应该集中于一个核心职责。这里的职责被定义为“变化的原因”, 如果有多于一个动机去改变一个类,那么这个类就具有多于一个的职责。这条原则也常 被称为内聚性,即一个模块的组成元素之间的功能相关性。遵循这条原则就意味着一个 类对外公开可用的操作之间是紧内聚的。 ( 2 ) 开放封闭原则软件实体( 类、模块、函数等) 应该是可以扩展的,但是不可 修改。 现实中客观事物总是不断变化的,软件实体也不例外。但变化不应该是随意的,丽 应该是朝着某个方向或按照某种规律。如果能够良好的预测变化,并只对程序中呈现出 频繁变化的部分作出抽象,构造贴切的结构来接受变化,就可以带来灵活性、可重用性 以及可维护性的好处。不成熟的抽象同样也是应该避免的。 作者参与的项目中通过抽象类和接口来体现开放一封闭原则。如数据访问层中的抽 象工厂模式,就充分的体现了这一原则。抽象工厂中各个非私有函数的返回类型均为预 定的标准“产品”接口。这样各个具体工厂中的非私有函数就可以返回实现这些接口的 不同具体类的实例。在软件的演化过程中,可以通过提供新增的具体工厂来增加新“产 大连理工大学硕士学位论文 品”,而对这些新“产品”的唯一要求是实现预定义的接口。这样构造的软件实体在一 定的方向上遵循某种规律是可扩展的,而不是必须修改源代码。 f 3 ) l i s k o v 替换原则子类型必须能够替换掉它们的基类型。 b a r b a r al i s k o v 于1 9 8 8 年首次描述了该原则:若对每个类型s 的对象0 1 ,都存在一个 类型t 的对象0 2 ,使得在所有针对t 编写的程序p 中,用o l 替换0 2 后,程序p 行为功能不变, 则s 是t 的子类型。 该原则背后的主要是机制是抽象和多态。在面向对象的语言中,常用接口、抽象类、 继承和后期绑定机制来支持抽象和多态。因此,在良好抽象的基础上,正确的使用继承, 灵活的运用接口。构建出恰当的类层次结构和清晰的接口,可以使得该原则得到遵循。 ( 4 ) 依赖倒置原则抽象不应该依赖于细节。细节应该依赖于抽象。 还可描述为:高层模块不应该依赖于底层模块。二者都应该依赖于抽象。这里的“倒 置”是相对于传统的软件开发方法而言的。在传统的软件开发中倾向于高层模块依赖于 底层模块。而设计良好的面向对象程序中,高层和底层模块都依赖于抽象,这里的抽象 更多的是指接口和抽象类,高层为它需要的服务声明一个抽象接口,高层通过该抽象接 口使用底层。这样每个高层都不依赖于底层,底层反而依赖于高层中声明的抽象服务接 口。 ( 5 ) 接口隔离原则不应该强迫客户依赖于它们不用的方法。接口属于客户,不属 于它所在的类层次结构。 该原则主要是为了避免接口污染。接口污染是指接口被一个它不需要的方法污染 了,接口中的方法之间不是紧内聚的。可以通过分离一个对象的客户来分离它的接口, 也可以使用委托等方法来分离接口。 ( 6 ) 重用发布等价原则重用的粒度就是发布的粒度。 一个包的重用粒度和其发布粒度一样大,被重用的任何东西必须同时被发布和跟 踪。在作者参与的项目中,是透过在独立的项目中构建需要重用的部分,并编译为独立 的类库来实现这一原则的。 ( 7 ) 共同封闭原则包中的所有类对于同一性质的变化应该是共同封闭的。一个变 化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何 影响。 这是单一职责原则在包上的应用所产生的新规定。如果一个需求的变化要求应用中 的代码必须改变,人们更希望需要更改的代码都集中在一个包中而不是分布在多个包 中。相对于可重用性而言,这一点儿更加强调可维护性。 ( 8 ) 共同重用原则一个包中的所有类应该是共同重用的。如果重用了包中的一个 设计模式在企业管理系统中的研究与应用 类,那么就要重用包中的所有类。 类通常不会孤立使用,同一个包中的类应当具有某种联系。当一个类被重用时,意 味着位于同一个包中别的类也可能被同时重用。或者说,在大多数情况下,重用的是多 个类相互协作构成的抽象,而不是孤立的类。同时该原则也说明了:没有紧密联系的类 不应该放在同一个包中。 ( 9 ) 无环依赖原则在包的依赖关系图中不允许存在环。 如果包的依赖关系中存在依赖环,包和包之间的耦合关系就会增强,不利于模块的 测试、独立发布和重用。可以通过使用依赖倒置原则或增加芡同依赖的包来解除依赖环。 ( 1 0 ) 稳定依赖原则朝着稳定的方向进行依赖。 使用共同封闭原则的结果,会创建许多包,有些具有易变性,有些具有稳定性。使 用稳定依赖原则,就应该让易变性的包依赖于稳定性的包。 ( 1 1 ) 稳定抽象原则包的抽象程度应该和其稳定程度一致。 稳定的包应该是抽象的,不稳定的包应该是具体的。 文献 2 0 中总结了面向对象范式的如下原则: f 1 ) “对象”是负有定义良好的责任的东西。 佗) 对象对自己负责。 ( 3 ) “封装”意味着任何形式的隐藏:数据隐藏、类隐藏( 藏在抽象类和接口的后面) 和实现隐藏。 ( 4 ) 使用共同点变化点分析抽象出行为和数据中的变化点。 ( 5 ) 针对接口进行设计。 ( 6 ) 把继承考虑为一种封装变化的方法、而不是为先有对象制造

温馨提示

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

评论

0/150

提交评论