- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件的体系结构 第9讲 的设计模式
软件体系结构 第 9 讲: 设计模式(一) 江贺 内容简介: 设计模式概念 设计模式的描述 实例研究:文档编辑器Lexi Lexi的文档结构与组合(Composite)模式 设计模式概念 Christopher Alexander: “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复的工作。” 《设计模式:可复用面向对象软件的基础》:设计模式是“对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述” 设计模式概念 设计模式的四个基本要素: 模式名称(Pattern Name): 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 问题(Problem): 描述了应该在何时使用模式。 解决方案(Solution) 描述了设计的组成部分,它们之间的相互关系和各自的职责和协作方式。 效果(Consequence) 描述了模式应用的效果及使用模式应该权衡的问题。 设计模式概念 设计模式的描述 模式名和分类 模式名简洁地描述了模式的本质。模式可以分为创建型、结构型、行为型。 意图 是回答下列问题的简单陈述:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题? 别名 模式的其他名称。 设计模式的描述 动机 举例说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情境。该情景会帮助你理解随后对模式更抽象的描述。 适用性 在什么情况下可以使用该模式?该模式可以用来改进哪些不良设计?你怎样识别这些情况? 结构 对模式中的类进行图形描述,说明对象之间的请求序列和协作关系。 设计模式的描述 参与者 设计模式中的各个对象、类以及它们各自的职责。 协作 模式的参与者如何协作以实现它们的职责。 效果 模式怎样支持它的目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变? 设计模式的描述 实现 实现模式时需要知道的一些提示、技术要点及应该避免的缺陷,以及是否存在某些特定于实现语言的问题。 代码示例 用C++/Smalltalk实现该模式的代码片段。 已知应用 实际应用系统中发现该模式的例子。 相关模式 实例研究:文档编辑器Lexi 实例研究:文档编辑器Lexi 实例研究:文档编辑器Lexi Lexi的文档结构与组合(Composite)模式 Lexi考虑的其实是如何来安排字符、线段、多边形、图像等的基本元素。 用户使用Lexi过程中,希望操作的既可以是单个字符、也可以是行、栏、表格、页等。行、栏、表格、页等都属于子结构,而这些子结构又可以包含更小粒度的子结构。字符、线段等可以看作是不包含子结构的原子型结构。 Lexi的文档结构与组合(Composite)模式 Lexi的文档结构与组合(Composite)模式 字符、线段等原子型结构与一般子结构的关系 Lexi的文档结构与组合(Composite)模式 字符、线段等原子型结构与一般子结构的动作基本一样: Draw 在屏幕上画出自己 Intersects 判断当前光标是否落在自己上面 字符、线段等原子型结构与一般子结构的均可以从同一个基类继承而来。 Lexi的文档结构与组合(Composite)模式 字符、线段等原子型结构与一般子结构的均从图元继承而来。 其中,比如行、栏等类中包含了大量的成员变量,这些成员变量又是图元的实例。 字符、线段等原子型结构与一般子结构的这种关系,实际上就是一种组合(Composite)模式 Lexi的文档结构与组合(Composite)模式 组合(Composite)模式 意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对于单个对象和组合对象的使用具有一致性。 Lexi的文档结构与组合(Composite)模式 组合(Composite)模式 动机 在图形编辑器和图形捕获系统这样的应用程序中,用户可以使用简单的构件创建复杂的图表。用户可以组合多个简单构件以形成一些较大的构件,而这些构件又可以组合成更大的构件。一种简单实现方法是将不同粒度的构件用不同的类来定义,例如为字符、线等简单图元定义一些类,而为行、栏定义另外一些类作为简单图元的容器类。但是用户在使用过程中可能将这些容器类的行为看成和简单图元类一样!而Composite模式试图解决这样的问题,它描述了如何使用递归组合,使得用户不必对这些类进行区别,如图所示。 Lexi的文档结构与组合(Composite)模式 组合(Composite)模式 适用性 在以下情况下使用Composite模式 希望表示对象的部分-整体层次结构 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象 Lexi的文档结构
原创力文档


文档评论(0)