欢迎来到天天文库
浏览记录
ID:56294921
大小:4.06 MB
页数:50页
时间:2020-06-10
《软件设计模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、软件设计模式SoftwareDesignPattern第一讲软件设计模式概述设计模式的基本概念软件危机软件设计模式的定义软件设计模式的必要性与作用软件设计的基本原则软件设计模式学习的前提基础软件设计模式的主要分类创建型模式结构型模式行为型模式工厂方法模式设计模式的基本概念-软件危机软件危机的含义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度的存在这些问题。软件危机包含下属两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。设计模式的
2、基本概念-软件危机软件危机的产生原因与软件本身的特点有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件;软件不会因使用时间过长而“老化”或“用坏”;在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量,软件质量也较难评价,因此管理和控制软件开发过程十分困难;软件质量不是根据大量制造的相同实体的质量来度量,而是与每一个组成部分的不同实体的质量紧密相关,因此,在运行时所出现的软件错误几乎都是在开发时期就存在而一直未被发现的,改正这类错误通常意味着改正或修改原来的设计,这就在客观上使得软件维护远比硬件维护困难;软件是一种信息产品,具有可延
3、展性,属于柔性生产,与通用性强的硬件相比,软件更具有多样化的特点。设计模式的基本概念-软件危机软件危机的产生原因来自于软件开发人员的弱点。其一,软件产品是人的思维结果,因此软件生产水平最终在相当程度上取决于软件人员的教育、训练和经验的积累;其二,对于大型软件往往需要许多人合作开发,甚至要求软件开发人员深入应用领域的问题研究,这样就需要在用户与软件人员之间以及软件开发人员之间相互通讯,在此过程中难免发生理解的差异,从而导致后续错误的设计或实现,而要消除这些误解和错误往往需要付出巨大的代价;其三,由于计算机技术和应用发展迅速,知识更新周期加快,软件开发人员经常处在
4、变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究。设计模式的基本概念-软件危机软件危机软件危机主要有以下一些典型表现:1.对软件开发成本和进度的估计常常很不准确。2.用户对“已完成的”软件系统不满意的现象经常发生。3.软件产品的质量往往靠不住。4.软件常常是不可维护的。5.软件通常没有适当的文档资料。6.软件成本在计算机系统总成本中所占的比例逐年上升。7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。设计模式的基本概念模式设计模式软件设计模式的必要性与作用设计模式的分类设计模式的基本概念设计模式的概念最早起源于C
5、hristopherAlexander.每个模式描述了一个在我们的环境中不断出现的问题以及该问题解决方案的核心。通过使用模式,我们可以无限次使用那些已有的解决方案,无需重复相同的工作。通用定义:模式是一种问题的解决思路,它已经适用于一种实践环境,并可以使用于其他环境。设计模式的基本概念-生活中的模式古人在遇到生活问题时,能通过不断的思考、实践、总结,最后得到许多解决生活困难的方法。后人遇到相同问题的时候,也会采用同样的方法,这些方法就被称为模式。烤肉-取火取水-打井耕田-耕牛设计模式的基本概念-设计模式所谓设计模式是对于某一类软件设计问题的可重用的解决方案。设
6、计模式的最终目标就是帮助人们利用成功软件设计师们的集体经验,来设计出更加优秀的软件,解决软件危机的问题。引入软件设计模式将成为企业或者个人可持续发展的必然选择。只有专业,才能在这个领域做得最好,为社会、企业和个人带来更多的价值设计模式的基本概念-设计模式的特点设计模式的特点名称每个设计模式都有一个名称。可传授性问题反复出现,解决问题的方案相同,大家都接受改方案。可重用性问题反复出现,尽管问题出现的环境有不同,但解决方案都应该有效。设计模式的基本概念-设计模式的必要性与作用重用设计重用设计比重用代码更有意义,它会自动带来代码重用;为设计提供共同的词汇每个模式名就
7、是一个设计词汇,其概念使得程序员间的交流更加方便;编写开发文档更加容易;重构系统更加容易设计模式从最初的设计就考虑到变化,因此当需求发生变化时,一般不会改变整体设计;节约设计时间可采用任何编程语言实现设计模式的基本概念-设计模式基本原则高内聚、低耦合一个软件系统要有一个稳定的架构,不会随需求的改变而发生巨大的变动。因此,高内聚、低耦合是一个软件系统设计中必须遵循的基本原则。面向抽象编程在面向过程的软件开发中,上层组件调用下层组件,就意味着上层组件依赖于下层组件,当下层组件发生剧烈变化时,上层组件也要跟着一起发生变动,这将导致软件组件模块的复用性大大降低,从而增
8、加软件开发成本,使软件结构设计上存在一
此文档下载收益归作者所有