- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
会计电算化-Read
软件设计模式 黄洪 hhzjut@ 课程目的 学习面向对象设计中前人最有价值的经验总结---设计模式。以便重用优秀、简单的、经过验证的问题解决方案。 设计模式实际上讨论的是在解决面向对象设计的某类问题时,应该设计那些类,这些类之间应该如何通信。 设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统的开发者更加容易理解其设计思路。设计模式帮助你做出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好地完成系统设计。 学习设计模式的重要性 参考书目 (美) GoF, 设计模式-可复用的面向对象软件的基础,机械工业出版社,2005 (美)Elisabeth Freeman,Eric Freeman,Bert Bates,Kathy Sierra ,《深入浅出设计模式》(英文影印版),东南大学出版社,2005 (美)Alan Holub,《设计模式初学者指南》,机械工业出版社,2006 洁城 浩,《设计模式-JAVA语言中的应用》,中国铁道出版社2005.1 /designpatterns/index.htm(板桥里人) 第一讲 设计模式简介 主要内容 设计模式的起源 什么是设计模式 设计模式的描述 设计模是怎样解决设计问题 设计模式起源于建筑学 著名建筑师Christopher Alexander 写过一本关于建筑学的书,叫做A Pattern Language,中译本叫做《建筑模式语言》,书中将解决一些共同建筑设计问题的优秀方案的相似之处称作“模式”。 他对模式的定义是“在某一背景下某个问题的一种解决方案”,“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的要素。这样,该解决方案就能被反复地使用而不必做重复劳动,但具体方式可能不会完全相同” 这就是建筑模式 模式的四个要素 模式名称(pattern name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 模式的目的/问题(problem) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题。 实现方法/解决方案(solution) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合来解决这个问题。 效果(consequences) 描述了模式应用的效果及使用模式应权衡的问题(限制和约束因素)。 从建筑模式到软件设计模式 软件开发人员认识到,Alexander 关于“建筑模式” 的思想也同样适用于软件设计,因为软件中也存在不断重复出现的、可以以某种相同方式解决的问题。尤其是面向对象的软件设计,只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗。两类模式的核心都在于提供了相关问题的解决方案。 20世纪90年代,软件设计模式的代表性研究成果《设计模式:可复用面向对象软件的基础》一书诞生,其作者是被称作四人帮(GoF)的四位学者。 请编程解决以下问题 一个交通查询系统,输入交通工具类型(如汽车、飞机)和起始地点,系统给出到目的地所需的时间。 为了简化问题,起始地点改成里程。 每种交通工具应该是一个类(对象),具有一个计算平均速度的方法,该方法根据三个参数a,b,c来计算平均速度。 如:汽车的平均速度 = a*b/c 飞机的平均速度=a+b+c等等 提示:交通工具名等参数可以通过main方法的参数传递;用Class.forName(交通工具名).newInstance()可以生成交通工具的对象。 问题 如果出现新的交通工具,你设计的系统能否不修改原来的代码就进行扩充,实现对新的交通工具运行时间的查询? 一个好的解决方案 采用面向接口的编程原则的一个解决方案。 对于一种经常遇到的设计问题的经过验证的优秀解决方案进行提炼,即可得到一种设计模式。今后遇到类似设计问题时,就可以采用这一解决方案。 设计模式的定义 一个设计模式命名、抽象和确定了一个优秀的通用设计结构的主要方面,这些设计结构能被用来构造可复用的面向对象设计。设计模式确定了所包含的类和对象,它们的角色、协作方式以及职责分配。每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍。 设计模式可以看作是面向对象设计领域的“定式”。 GoF(Ga
原创力文档


文档评论(0)