01.面向对象和设计模式概述.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、模式的起源 模式的研究起源于建筑工程大师Christopher Alexander的关于城市规划和建筑设计的著作: 《A Pattern Language:Towns, Buildings, Construction》(《建筑模式语言》) 他对模式的定义是:在某一背景下某个问题的一种解决方案 “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,该解决方案就能被反复地使用而不必做重复劳动”。 尽管他的著作是针对城市规划和建筑设计的,但是其观点实际上适用于所有的工程设计领域,包括软件工程领域。 模式的起源(续) 在软件行业中模式的起源可以追溯到1987年: 1987,Ward Cunningham、Kent Beck,“Using Pattern Languages for Object-Oriented Programs” Later,Jim Coplien,“Advanced C++ Programming Styles and Idioms” 1995, Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides (Gang of Four, GoF), “Design Patterns Elements of Reusable Object-Oriented Software” 其中John Vlissides在2005年11月24日在家中去世 在那以后,参加模式研究和应用的人越来越多,模式语言编程大会(Pattern Languages of Programming)定期在美国举行。 设计模式的目的 在软件设计中不是解决任何问题都要从头做起,有经验的开发者更愿意复用以前使用过的解决方案 设计模式的目的就是将面向对象软件的设计经验作为设计模式记录下来 每个模式系统地命名、解释和评价了面向对象系统中一个重要和重复出现的设计。 设计模式给开发者带来的好处: 1、可以更加方便地复用成功的设计和体系结构。 2、使新系统开发者更加容易理解其设计思路。 3、帮助开发者做出有利于系统复用的选择,避免设计损害了系统复用性。 4、能够提高已有系统的文档管理和系统维护的有效性。 2、GoF关于设计模式的定义 在GoF的著作中设计模式是对“被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述” GoF的设计模式并不描述类似链表、队列、Hash表那样的基础构件,也不包括那些复杂的、用于特定领域的子系统或框架。 一个设计模式命名、抽象和确定了一个通用设计结构的主要方面,这些设计结构能被用来构造可复用的面向对象设计 每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍。 3、模式的四个基本要素 1、模式名称(pattern name): 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 2、问题(problem):描述了应该在何时使用模式。 3、解决方案(solution):描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式 因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。 4、效果(consequences):描述了模式应用的效果及使用模式应权衡的问题。 4、描述设计模式的模版 1、模式名和分类:模式名简洁地描述了模式的本质。 2、意图:回答设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题? 3、别名:模式的其他名称。 4、动机:用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景。 5、适用性:什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?你怎样识别这些情况? 6、结构:采用基于对象建模技术和序列图来说明对象之间的请求序列和协作关系。 7、参与者:指设计模式中的类和/或对象以及它们各自的职责。 描述设计模式的模版(续) 8、协作:模式的参与者怎样协作以实现它们的职责。 9、效果:模式怎样支持它的目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变? 10、实现:实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于实现语言的问题。 11、代码示例:用来说明怎样用编程语言实现该模式的代码片段。 12、已知应用:实际系统中发现的模式的例子。 13、相关模式:与这个模式紧密相关的模式有哪些?其间重要的不同之处是什么?这个模式应与哪些其他模式一起使用? 5、设计模式的编目 Abstract Factory:提供一个创

文档评论(0)

叶勇忠 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档