设计模式在软件设计中的应用.doc_第1页
设计模式在软件设计中的应用.doc_第2页
设计模式在软件设计中的应用.doc_第3页
设计模式在软件设计中的应用.doc_第4页
设计模式在软件设计中的应用.doc_第5页
全文预览已结束

下载本文档

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

文档简介

设计模式在软件设计中的应用研究摘要软件设计模式是计算机软件专业方面一门很重要的课程。几乎所有计算机专业的学生都学过这门课程。但是我们堂堂认真听课次次辛苦写作业任劳任怨地学完了整个学期的课程,就代表我们掌握了软件设计模式的技巧了吗?答案是否定的,软件设计模式是用一种策略方式来提高软件的可靠性,提高代码的可复用性,提高软件的后期可维护性。设计模式是对面向对象设计中反复出现的问题的解决方案。这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义目前还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。设计模式还为软件重构提供了目标。而本文就是给大家浅析下本人学完设计模式课程后对其应用的一点儿认识。关键词: 软件工程;设计模式; 算法;面向对象AbstractSoftware design model is a computer software professional courses is very important. Almost all computer science students have learned in this course. Seriously detract from the lectures but we worked hard times and hard working hard to learn over the course of the semester, on behalf of the model we have mastered skills in software design it? The answer is no, the software design pattern is a strategy approach to improve software reliability, improve code reusability and improve software maintainability late. Design patterns in object-oriented design is a recurring solution to the problem. The term in the 1990s by the Erich Gamma and others from the field of architectural design in the introduction to computer science come. The meaning of the term is still disputed. Algorithm is not designed to model, because the algorithm dedicated to solve problems rather than design problems. Design pattern describes a set of often closely interrelated role of classes and objects. Design patterns provide a common language to discuss software design, making the design experience of skilled designers and other designers can be for beginners to master. Design pattern also provides a target for software refactoring. The following article is for everyone of course I am, after completion of design patterns a little understanding of their applications. Keywords: software engineering; Model design; Algorithms; object-oriented 经过了本学期软件设计模式课程的学习,我确实感到受益匪浅,运用“设计模式 主要看它能不能帮我们解决问题,一个例子举得好在一张白纸上随便画几下,再用画图板粘贴一下,一张UML图示就出来了,十几个设计模式,并不完全适合我们。用通俗易懂的语言阐述软件设计过程中的一些“模式”,在某种特定环境下,用最好的设计方法(代码高内聚,低耦合,使其有良好的可扩展性和可维护性)达到我们的目的,或许其方法有很多很多,但是寻找到最好的方法却不是件容易的事,设计模式是对前人的设计经验的一个总结,告诉我们在某种特定的环境下,学习设计模式有助于我们在设计软件的过程中少走很多弯路。所以并不是模式用得越多就越好,用得不当就可能变成了反模式,不过对于自己的学习项目,还是要大胆偿试。通过在大学三年做过的一些项目,在这些经验的进一步总结下。总结出自己在软件设计模式方面的一些心得,因此在此谈谈对使用设计模式的一些看法,本人感觉如果要想很好地使用设计模式我们必须从以下几点入手。首先是重视模式的选取由于各种设计模式,都有自身的特点和使用场景,所以在使用的过程中一定要选择合适的设计模式,这样才可以使软件设计模式的优点得到很好的发挥,如果选取不当反而会事倍功半。以下就几种简单的模式做简单的介绍。第一, 工厂模式。模式特点:工厂模式一般用于创建一类对象,而不用每次在使用时通过new()对象才能使用对象,而是通过工厂来完成对象的创建,这样不但提供了统一创建对象的入口,而且对于程序的可维护和可测试性都有很大的提高。总体来说如下场景使用工厂模式非常合适:1、工厂负责创建某一类对象的时候,或者说工厂的职责比较单一时,如果说存在多个类型的对象时,用工厂模式就不如使用抽象工厂了。2、一般比较少的积累对象,可以通过类型的判定创建不同的对象时,也是可以通过工厂模式来完成,例如多数据库的支持,我们在设计数据访问层时,利用简单对象工厂,通过枚举或者配置文件的形式,来动态的创建数据访问层实例。3、一般来说类型单一的对象,或者类型比较少的时候,使用工厂模式来创建对象可以解决一类问题。还可以通过一个总的工厂,来创建多个工厂,然后多个工厂负责创建相应的实例,有点类似我们平时说的目录结构似的。使用场景:大家都知道,对于管理信息系统(MIS)开发,都离不开数据库操作。但是对于数据库在操作过程中,目前市场上提供的数据库有,sqlserver ,access ,mysql ,oracle 等数据库。但是对于一个完善的MIS系统来说,应该使用多种数据库。所以我们就会想到用工厂模式。我们可以在项目中新建一个database_factory类。而这个类的功能就是根据需要创建各种各样的数据库连接类型。这个对于.Net 的学生来说已经相当的熟悉了。这就是著名的基于工厂模式的三层架构模式。看来我们已经在无形中使用了工厂模式了。第二,单例模式模式特点:作为对象的创建模式,单例模式确保某个类只有一个实例,而且自行实例化,并向系统提供这个实例,如果一个类称为单例类。它有以下三个要点:一,只能有一个实例二,自行创建这个实例三,自行向系统提供这个实例使用场景:大家都知道,我们的操作系统对有些硬软件的管理是有严格限制的。例如多个系统共享一个打印机。此时我们必须是用单例模式来模拟这个过程。还有就是著名的售票系统,对于所有售票点的票,这个资源我们必须是只能声明一个对象来管理。如果每个代售点都声明了一个票资源的类,我们在售票的时候一定会出现种种可笑的情况。在这种情况下我们必须是用单例模式。第三,组合模式模式特点: 组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们在树型结构的问题中模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。使用场景组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式非常有用武之地。关于分级数据结构的一个普遍性的例子就是你每次使用电脑时所遇到的:文件系统。文件系统由目录和文件组成。每个目录都可以装内容。目录的内容可以是文件,也可以是目录。按照这种方式,计算机的文件系统就是以递归结构来组织的。如果你想要描述这样的数据结构,那么你可以使用组合模式Composite Pattern。其次,我们要掌握设计模式的选取策略现有的软件设计模式一般应用于以下2 个方面:1、在软件设计的开始阶段就应用设计模式对软件体系结构进行设计。2、在系统的体系结构设计初步完成后,对系统另有要求的组件或模块通过加入设计模式使其更加优化、灵活。由于设计模式具有一定的复杂性,所以很难将其应用到具体的软件。设计模式中,主要原因有两点:软件设计人员没有正确把握和理解软件设计模式; 没有一种有效的方法来指导使用这些设计模式,为此在此提出了设计模式应用于软件设计的策略,步骤如下. 步骤1: 对所要解决的问题进行抽象,并划分适当的类型。 步骤2: 根据问题类型选择适合的设计模式。 步骤3: 规划问题和匹配模式,即将所要解决的问题与所选择的设计模式进行比较,找出共性.在所要解决的问题域内考虑元素对应于模式中的类和模式中的各种角色,如果发现选择的设计模式并不合适,返回步骤3,重新进行设计。 步骤4: 对选取的模式进行变体,即对模式的原始结构进行修改或扩展,以解决具体问题。 步骤5: 设计并细化所需的软件体系结构。 步骤6: 对设计质量进行度量。再次,我们要灵活运用书中提到的设计模式近年来,大家都开始注意设计模式。那么,到底我们为什么要用设计模式呢?这么多设计模式为什么要这么设计呢?说实话,以前我还真没搞清楚。就是看大家一口一个Design pattern,心就有点发虚。于是就买了本四人帮的设计模式,结果看得似懂非懂:看的时候好像是懂了,过一会就忘了,可能是本人比较愚钝吧。设计模式的概念有时候我们是真的能看懂,并且能理解,但之后却不知道应该如何用它,或者觉得自己的项目好像不需要,或不知把它用在哪里.因为缺乏一些项目经验的问题.实际上我觉得学习设计模式还是要自己单独去开发一些项目,而不要刻意去看!。最近,有了点感悟。独乐不如众乐,与大家分享一下,还望指教! 为什么要提倡Design Pattern呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?OO界有前辈的几个原则:开闭原则(Open Closed Principal)、里氏代换原则、合成复用原则。设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。但是我需要提醒大家的是大家在追求设计模式的过程中切不可以为地按照某种模式做下去,而是要注重灵活的变动。大家都知道在军事上作战如果一味地追求“教条”追求“照本宣科”,带来的只有失街亭这样的悲剧。作战如此,其实做软件亦如此。我们一味地追求按照某种模式来写,反而给系统带了了更严重的开销。在项目不断完善-重构-再完善-再重构.往复的过程中去学习,因为在用心完善你的项目的时候一定会遇到很多问题.然后会尝试着去找更好的方法去改善,有时候我们解决问题的方法就已经是一种设计模式了,随着问题与知识的积累,再看看一些设计模式的书,然后会有较好的收获。因而在实际的开发过程中我们要灵活运用,这样才能更好地掌握软件开发的技巧。才可以使软件的档次更高。才可以使软件设计模式的魅力得到了更大程度的发挥。结束语本文从个人的实际经验出发通过三个方面认真地讨论了设计模式在软件设计中的应用。旨在提高大家对设计模式的认识,以及在后期的软件设计中可以灵活运用设计模式。来达到,设计出更合理的,更高质量的软件。本文首先概述要重视软件设计模式的选取。在这里深刻讨论了三个常用设计模式的特点以及使用场景。其次又讲述了软件设计模式的选取过程中的策略。再次就是号召大家要灵活运用软件设计模式。只有灵活运用才可以使设计模式发挥到更好的效果,才有助于程序设计人员设计出更高,更强,更优秀的软件。设计模式建立在对系统变化点的基础上进行,哪里有变化,哪里就应用设计模式。设计模式应该以演化的方式来获得,系统的变化点往往是经过不断演化才能准确定位。不能为了模式而模式,设计模式是一种软件设计的软力量,而非规范标准,不应夸大设计模式的作用。最后,引用设计模式解析书中的一句话:设计模式体现的是一种思想,而思想是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财

温馨提示

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

评论

0/150

提交评论