文档详情

chap07面向对象设计模式解析.ppt

发布:2017-01-22约1.34万字共81页下载文档
文本预览下载声明
内容安排 模式基础 设计模式 GoF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构 职责 职责(Responsibility):一个类或类型的契约或者义务;它与对象在行为上的义务密切相关;可分为两类职责: “知道”型职责 知道自己的私有的、封装了的数据 知道与自己相关联的对象信息 知道自己派生出来或者计算出来的事物 “做”型职责 自己完成某件任务 发起其他对象执行动作 控制和协调其他对象内的活动 职责和方法 方法实现职责(操作) GRASP GRASP(General Responsibility Assignment Software Pattern,通用职责分配软件模式) GRASP模式描述了将职责分配给对象的基本原则,这些原则被表示成模式 9种GRASP模式 Craig Larman, Applying UML and Patterns (2nd) 信息专家(Information Expert) 创建者(Creator) 高内聚(High Cohesion) 低耦合(Low Coupling) 控制者(Controller) 多态( Polymorphism) 纯虚构( Pure Fabrication) 中介者(Indirection) 受保护变化模式(Protected Variations) GRASP:信息专家模式 将职责分配拥有履行一个职责所必需信息的类,即信息专家 专家模式在职责分配中的应用比任何其他模式都广泛,它是面向对象的设计中的一个基本指导原则 专家不是一个模糊或者新奇的设计概念,它表述了最普遍的一种“直觉”,即对象所能完成的工作要依赖于它所掌握的信息 优点: 封装能够得以维持,因为对象只使用他们自己包含的信息来完成任务(低耦合) 系统行为只分布在具有所需信息的类中(高内聚) 别名: 把责任交给数据;谁知道谁来干;拟人化;自己做… GRASP:受保护变化 识别可预知的变化或不稳定点;通过分配职责来创建围绕它们的稳定接口 PV是大多数编程和设计的机制和模式的基本动机之一,它使得系统能适应和隔离变化 PV与开放-封闭原则思想是一样的,只是侧重点稍异 优点 低耦合 Demeter准则 作为PV模式的一个特例,Demeter准则是获得受限结构变化的一种机制,它给出了在一个方法内应该向哪些对象发送消息的限制 Demeter准则(Law of Demeter):在那些需要在其上发送消息的对象上面放置一些限制条件,它表明在一个方法中,消息只能发往下面的对象 对象本身 方法的一个参数 对象本身的属性 对象本身的一个属性集合中的元素 该方法内创建的对象 别名:不要和陌生人讲话 示例:不要和陌生人讲话 class Application{ private Form form; public void execute(){ form.getPanel().getButton().doSomething(); //... } //... } 内容安排 模式基础 设计模式 GoF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构 模式与编程语言 模式不依赖于编程语言 某种程度上来说,模式构成了一种设计语言,它比编程语言更进了一步,使开发人员可以彼此交流设计思想 可以用任何语言实现任何设计模式 对于特定的模式,用某些语言要比用其他语言更容易实现 GoF:Observer模式的实现 内容安排 模式基础 设计模式 GoF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构 重构 重构:改善既有代码的设计 Refactoring:Improving the Design of Existing Code 所谓重构是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构 “在代码写好之后改进它的设计” 关于重构 重构源于Smalltalk,Smalltalk中提供了Refactoring Browser来支持重构 重构成为XP(eXtreme Programming)中最重要的实践过程 开始时,如果没有看出抽象的必要,可以先实现一个简单的,当第一次被需求触发而显现出抽象的必要时,这时机会就来了,需要运用设计原则或模式,提取抽象接口 重构的目标:使软件模块(类、构件等)具有它合适的职责 运行起来所完成的功能 应对变化 和阅读它的人进行沟通 设计模式与重构 设计模式为重构提供了目标 重构工作依据设计模式来进行 重构使设计模式重新闪现光辉 追求完美的设计却无法写出实用的代码,而“实用”使软件压倒一切的要素 Joshua Kerievsky在“模式与XP”指出:在设计前期使用模式常常会导致过度工程 简单设计,再重构 重构到模式(Refactoring t
显示全部
相似文档