版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计模式对软件开发过程的优化探讨摘要:设计模式在面向对象程序设计中有着广泛的应用,通过它的使用能使程序更加精炼、更易理解。对设计模式产生的原因、工作原理、包含要素以及如何对程序进行优化进行了阐述。关键词:设计模式;面向对象;程序设计;程序优化0引言随着计算机在各个领域应用的不断深入,与之相应的软件需求应运而生,对软件的要求也越来越高,比如功能要求越来越完备、结构要求越来越合理、效率要求越来越高等。如此之多的要求使得软件分析、设计与编码成为必然。本文提出的设计模式的合理运用对提高软件产品的质量非常重要,同时,本文对优化过程进行了举例。1设计模式引入原因软件程序设计过程中,经常会遇到类似的问题要处
2、理,但对于不同的设计者,解决这类问题采用的方法和设计思路会有所不同,最终所体现的软件性能和软件质量也不同。即使是同一问题,采用不同的方法也会有不同的设计和不同的编程语言,甚至是同一问题、同一方法、同一编程语言,有经验的设计者能够做出良好的设计,无经验者或新手的设计可能会欠佳,影响到最终代码编程的实现。这样,要设计出好的、能够复用的软件就很困难。2设计模式原理针对某一类特定的问题,通过资深设计师的设计,经过程序语言的编码和系统运行的检验,证明是成功的,从而记录下来,成为此类问题的设计模式。对于大型软件项目,为了节省项目工期并提高项目质量,设计者可以用经过实践检验好的设计模式,使得设计者对同类问题
3、没有必要重复设计,帮助设计者将软件项目的规划设计建立在以往工作的基础上。设计模式简化了系统的体系结构,使设计者更好更快地完成系统设计,也会使参与项目的成员更加容易理解其设计思路。3设计模式要素有了设计模式之后,在遇到类似的不断重复的问题时,不必重复考虑,采用过去的设计模式,就会达到事半功倍的效果。每一个设计模式都有4个基本要素:模式名称。它是对设计模式的抽象描述,以便于同其他设计者交流设计思想和经验,具有一定的代表意义。问题。表示特定的设计问题,如在什么时候使用模式,以及问题之间的因果关系,如何表示算法,如何描述系统结构,以及满足的一系列先决条件。解决方案。分析完问题,就必须针对问题的不同方面
4、,来构成设计元素的解决方案,每一个子问题对应一个解决方案,合成每一个解决方案模块,构成总解决方案,从而体现它们之间的相互关系,以及各模块的职责和协作。效果。使用设计模式能对系统的灵活性、扩充性和移植性以及健壮性产生积极影响,从而对该设计模式作出评估。4设计模式的分类及功能设计模式是对软件开发中的软件实现方法和结构的总结归纳,是对软件重复设计问题的综合设计,主要有3大类型:创建型设计模式。它抽象了实例化过程,使得系统创建独立于对象的描述,随着系统复杂度的增加,系统实现往往依赖于对象的复合而非类的继承,创建型模式为此类系统的实现发挥了重要作用。常用的有工厂模式、抽象工厂模式、原型模式、单例模式等。
5、结构型设计模式。它是关于类和对象的组合,以获得更大的结构,采用继承机制来组合接口或实现。常用的有合成模式、装饰模式、代理模式、享元模式、桥梁模式等。行为型模式。它是主要描述算法和对象之间关系的关联模式,常用的有模版模式、观察者模式、迭代器模式、责任链模式、命令模式、状态模式等。5设计模式使用时存在的问题软件开发人员都意识到了设计模式的重要性,但是有时开发人员发现很难将设计模式与实际开发中需要解决的具体问题相联系。因为使用设计模式的难点往往不在于模式的实现,而在于很难确定哪种模式可以在现实的应用场景中采用,从而导致了在现实的项目中,面对客户的压力,开发人员总是采用最直截了当的方法解决问题,而来不
6、及多考虑这些方法的优劣,即使明知将来可能有大麻烦也这样写。有些时候因为选择了不恰当的设计模式,使原本简单的问题变得复杂化。6设计模式对程序的优化实例下面通过两段代码来进行分析:(1)过多的ifelse分支。if(state=1)/调用获取信息方法1elseif(state=2)/调用获取信息方法2else/调用获取信息方法n上面是一段比较常见的代码,如果条件判断非常之长,并且其它地方也有类似的处理情况,这些代码对于后阶段的维护将是非常繁琐的。如果在一段代码中,不少地方有类似上面这样需根据某类型或状态等作出不同处理的情况,那么当类型或状态增加时,这些代码将会过于僵硬,扩展性差,只有再增加else
7、if,才能保证其可维护性。设计模式中有一种模式可以解决该问题,即状态模式。状态模式给我们带来的好处有:状态模式需要对每一个系统可能取得的状态创立一个状态类(State)的子类,当系统状态变化时,系统改变所选的子类。与一个特定的状态有关的行为都被包装在一个特定的对象里,而且当需要增加新的状态时,可以以子类的方式将它加到系统里,从而提高了易维护性和可扩展性;由于每一个状态都被包装到了类里面,避免了使用过多的条件转移语句。对上面的代码进行演示性的改进。我们可以定义一个类型接口,该接口相当于状态模式中的状态类,改进后的代码如下:publicinterfaceType/*获取信息*/publicObje
8、ctgetInfo();/*获取结果*/publicObjectgetResult();(2)多次载入资源,引起资源损耗。publicstaticStringgetProperty(StringpropKey)throwsException.Propertiesprop=newProperties();InputStreampropConfFile=Util.class.getClassLoader().getResourceAsStream(perties);载入propConfFile到prop中,从prop中获取propKey的值,并将其返回上面的代码用于读取工
9、程配置文件的属性,但该段代码是存在一些问题的,因为在每次获取属性时,它都重新载入资源,造成了资源的过多损耗。对于此种情况,可以通过单例(Singleton)模式来进行优化,修改代码如下:publicclassPropertiesUtil.privatestaticMappropertiesMap=null;publicstaticStringgetProperty(StringpropKey)throwsException.if(propertiesMap=null)./当propertiesMap为空时,载入文件,将其键值对放入propertiesMap中在propertiesMap中获得propKey属性,并将值返回7结束语设计模式是对前人经验的总结和加工而形成的对特定问题的解决方案,其合理运用是提高软件质量的重要手段。所以对程序设计人员来说,要很好地领会已经存在的设计模式,通过学习来提高设计水平,并站在一定的高度来思
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI在中外政治制度中的应用
- 2026年高考全国Ⅱ卷英语试题(含答案和音频)
- 2026年北师大版小学数学六年级下册期末质量检测卷及答案(2套)
- 重庆大足三驱110千伏输变屯工程水土保持报告表
- 网络信息安全基础(AIGC版)随堂前测练习题及参考答案 项目9-任务2-前测练习-单选题5
- 2026辅警升职面试题及答案
- 2026包师社团面试题及答案
- 2026年3-6岁儿童学习与发展指南解读考试试题
- 叠合整体式综合管廊结构技术规程
- 第7单元 认识时间( 教学设计)二年级上学期数学人教版
- 2026年政工职称考试题库附答案(满分必刷)
- 雨课堂学堂在线学堂云《多彩机器人世界(华侨大学 )》单元测试考核答案
- 博睿APM应用性能监控系统-性能监控-企业管理-云市场-华为云
- 2025至2030全球及中国汽车座椅加热器行业项目调研及市场前景预测评估报告
- 2025年AS9100D-2016航天航空行业质量管理体系全套质量手册及程序文件
- 昆明市生产安全事故应急预案
- 肠结核和结腹性腹膜炎教案(2025-2026学年)
- 理论宣讲方法培训
- 口腔医院服务制度
- 2025上半年软考软件评测师真题及答案
- 2025泰安市泰山城建集团有限公司部分权属企业工作人员招聘(56人)笔试参考题库附带答案详解
评论
0/150
提交评论