好书整理系列之-设计模式:可复用面向对象软件的基础 7

Visual C++ 专栏收录该内容
17 篇文章 0 订阅


附录A 词汇表
抽象类(abstract class) 一种主要用来定义接口的类。抽象类中的部分或全部操作被延
迟到其子类中实现。抽象类不能实例化。
抽象耦合(abstract coupling) 若类A维护一个指向抽象类B的引用,则称类A抽象耦合
于B。我们之所以称之为抽象耦合乃是因为A指向的是一个对象的类型,而不是一个具体对
象。
抽象操作(abstract operation) 一种声明了型构( s i g n a t u r e)而没有实现的操作。在
C + +中,抽象操作对应于纯虚成员函数。
相识关系(acquaintance relationship) 如果一个类指向另一个类,则这两个类之间有相
识关系。
聚合对象(aggregate object) 一种包含子对象的对象。这些子对象称为聚合对象的部分,
而聚合对象对它们负责。
聚合关系(aggregation relationship) 聚合对象与其部分之间的关系。类为其对象(例
如,聚合对象)定义这种关系。
黑箱复用(black-box reuse) 一种基于对象组合的复用方式。这些被组合的对象之间并
不开放各自的内部细节,因此被比作“黑箱”。
类(c l a s s) 类定义对象的接口和实现。它规定对象的内部表示,定义对象可实施的操作。
类图(class diagram) 类图描述类及其内部结构和操作,以及类间的静态关系。
类操作(class operation) 以类而不是单独的对象为目标的操作。在C + +中,类操作称
为静态成员函数。
具体类(concrete class) 不含抽象操作的类。它可以实例化。
构造器(c o n s t r u c t o r) 在C + +中,一种系统自动调用的用来初始化新对象实例的操作。
耦合(c o u p l i n g) 软件构件之间相互依赖的程度。
委托(d e l e g a t i o n) 一种实现机制,即一个对象把发给它的请求转发/委托给另一个对象。
而受托对象将代表原对象执行请求的操作。
设计模式(design pattern) 设计模式针对面相对象系统中重复出现的设计问题,提出一
个通用的设计方案,并予以系统化的命名和动机解释。它描述了问题、解决方案、在什么条
件下使用该解决方案及其效果。它还给出了实现要点和实例。该解决方案是解决该问题的一
组精心安排的通用的类和对象,再经定制和实现就可用来解决特定上下文中的问题。
析构器(d e s t r u c t o r) 在C + +中,一种系统自动调用的用来清理( f i n a l i z e)即将被删除
的对象的操作。
动态绑定(dynamic binding) 在运行时刻才将一个请求与一个对象及其一个操作关联起
来。在C + +中,只有虚函数可动态绑定。
封装(e n c a p s u l a t i o n) 其结果是将对象的表示和实现隐藏起来。在对象之外,看不到其
内部表示,也不能直接对其进行访问。操作( o p e r a t i o n)是访问和修改对象表示的唯一途径。
框架(f r a m e w o r k) 一组相互协作的类,形成某类软件的一个可复用设计。框架将设计
划分为一组抽象类,并定义它们各自的责任及相互之间的合作,以此来指导体系结构级的设
计。开发者通过继承框架中的类和组合其实例来定制该框架以生成特定的应用。
友类(friend class) 在C + +中,A为B的友类是指A对B中的操作和数据有与B本身一样
的访问权限。
继承(i n h e r i t a n c e) 两个实体间的一种关系,其中一实体乃是基于另一实体而定义的。
类继承以一个或多个父类为基础定义一个新类,这个新类继承了其父类的接口和实现,被称
为子类( C + +)或派生类。类继承包含了接口继承和实现继承。接口继承以一个或多个已有
接口为基础定义新的接口;实现继承以一个或多个已有实现为基础定义新的实现。
实例变量(instance variable) 定义部分对象表示的数据。C + +中使用的术语是数据成
员。
交互图(interaction diagram) 展示对象间请求流程的一种示意图。
接口(i n t e r f a c e) 一个对象所有操作定义的型构的集合。接口刻划了一个对象可响应的
请求的集合。
元类(m e t a c l a s s) 在S m a l l t a l k中,类也是对象。元类是类对象的类。
混入类(mixin class) 一种被设计为通过继承与其他类结合的类。混入类通常是抽象
类。
对象(o b j e c t) 一个封装了数据及作用于这些数据的操作的运行实体。
对象组合(object composition) 组装和组合一组对象以获得更复杂的行为。
对象图(object diagram) 描述运行时刻特定对象结构的示意图。
对象引用(object reference) 用于标识另一对象的一个值。
操作(o p e r a t i o n) 对象的数据仅能由其自身的操作来存取。对象受到请求时执行操作。
在C + +中,操作称为成员函数,而S m a l l t a l k使用术语“ 方法”。
重定义(o v e r r i d i n g) 在一个子类中重定义(从父类继承下来的)操作。
参数化类型(parameterized type) 一种含有未确定成分类型的类型。在使用时,将未确
定类型处理成参数。在C + +中,参数化类型称为模板(t e m p l a t e)。
父类(parent class) 被其他类继承的类。S m a l l t a l k又称之为超类(s u p e r c l a s s),C + +中
又称之为基类(base class),有时又称为祖先类(ancestor class)。
多态(p o l y m o r p h i s m) 在运行时刻接口匹配的对象能互相替换的能力。
私有继承(private inheritance) 在C + +中,一种仅出于实现目的的继承。
协议(p r o t o c o l) 接口概念的扩展,包含指明可允许的请求序列。
接收者(r e c e i v e r) 一个请求的目标对象。
请求(r e q u e s t) 一个对象当受到其他对象的请求时执行相应的操作。通常请求又称为消
息。
型构(s i g n a t u r e) 一个操作的型构定义了它的名称、参数和返回值。
子类(s u b c l a s s) 继承了另一个类的类。在C + +中,子类又称为派生类(derived class)。
子系统(s u b s y s t e m) 一组相互协作的类形成的一个相对独立的部分,完成一定的功能。
子类型(s u b t y p e) 如果一个类型的接口包含另一类型的接口,则前一类型称为后一类


型的子类型。
超类型(s u p e r t y p e) 为其他类型继承的父类型。
工具箱(t o o l k i t) 一组提供实用功能的类,但它们并不包含任何具体应用的设计。
类型(t y p e) 一个特定接口的名称。
白箱复用(white-box reuse) 一种基于类继承的复用。子类复用父类的接口和实现,但
它也可能存取其父类的其他私有部分。


 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
通篇都是以情景对话形式,用多个小故事或编程示例来组织讲解GoF(设计模式经典名著——Design Patterns: Elements of Reusable Object-Oriented Software,中译本名为《设计模式——复用面向对象软件基础四位作者Erich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为 Gang of Four,即四人组,简称GoF)总结23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象意义、好处以及几个重要设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式全面总结。附录部分是通过一个例子演变为初学者介绍了面向对象基本概念。本书特色是通过小菜与大鸟趣味问答,在讲解程序不断重构和演变过程中,把设计模式学习门槛降低,让初学者以更加容易地理解——为什么这样设计才是好?是怎样想到这样设计?以达到不但授以“鱼”,还授以“渔”。引导读者体会设计演变过程中蕴藏大智慧。 本书适合编程初学者或希望在面向对象编程上有所提高开发人员阅读。 目 录 第1章 代码无错就是优?——简单工厂模式 1 1.1 面试受挫 1 1.2 初学者代码毛病 2 1.3 代码规范 2 1.4 面向对象编程 4 1.5 活字印刷,面向对象 4 1.6 面向对象好处 5 1.7 复制vs.复用 6 1.8 业务封装 6 1.9 紧耦合vs.松耦合 8 1.10 简单工厂模式 10 1.11 UML类图 12 第2章 商场促销——策略模式 17 2.1 商场收银软件 17 2.2 增加打折 18 2.3 简单工厂实现 19 2.4 策略模式 22 2.5 策略模式实现 25 2.6 策略与简单工厂结合 27 2.7 策略模式解析 28 第3章 拍摄UFO——单一职责原则 30 3.1 新手机 30 3.2 拍摄 30 3.3 没用东西 31 3.4 单一职责原则 31 3.5 方块游戏设计 31 3.6 手机职责过多吗? 33 第4章 考研求职两不误——开放-封闭原则 34 4.1 考研失败 34 4.2 开放-封闭原则 35 4.3 何时应对变化 36 4.4 两手准备,并全力以赴 37 第5章 会修电脑不会修收音机?——依赖倒转原则 38 5.1 MM请求修电脑 38 5.2 电话遥控修电脑 39 5.3 依赖倒转原则 40 5.4 里氏代换原则 41 5.5 修收音机 43 第6章 穿什么有这么重要?——装饰模式 44 6.1 穿什么有这么重要? 44 6.2 小菜扮靓第一版 45 6.3 小菜扮靓第二版 47 6.4 装饰模式 50 6.5 小菜扮靓第三版 53 6.6 装饰模式总结 56 第7章 为别人做嫁衣——代理模式 57 7.1 为别人做嫁衣! 57 7.2 没有代理代码 58 7.3 只有代理代码 60 7.4 符合实际代码 61 7.5 代理模式 63 7.6 代理模式应用 65 7.7 秀才让小六代其求婚 66 第8章 雷锋依然在人间——工厂方法模式 67 8.1 再现活雷锋 67 8.2 简单工厂模式实现 68 8.3 工厂方法模式实现 69 8.4 简单工厂vs.工厂方法 71 8.5 雷锋工厂 72 第9章 简历复印——原型模式 77 9.1 夸张简历 77 9.2 简历代码初步实现 78 9.3 原型模式 80 9.4 简历原型实现 82 9.5 浅复制与深复制 84 9.6 简历深复制实现 87 9.7 复制简历vs.手写求职信 89 第10章 考题抄错会做也白搭——模板方法模式 90 10.1 选择题不会做,蒙呗! 90 10.2 重复=易错+难改 91 10.3 提炼代码 93 10.4 模板方法模式 96 10.5 模板方法模式特点 98 10.6 主观题,看你怎么蒙 98 第11章 无熟人难办事?——迪米特法则 100 11.1 第一天上班 100 11.2 无熟人难办事 100 11.3 迪米特法则 102 第12章 牛市股票还会亏钱?——外观模式 103 12.1 牛市股票还会亏钱? 103 12.2 股民炒股代码 104 12.3 投资基金代码 106 12.4 外观模式 108 12.5 何时使用外观模式 110 第13章 好菜每回味不同——建造者模式 112 13.1 炒面没放盐 112 13.2 建造小人一 113 13.3 建造小人二 114 13.4 建造者模式 115 13.5 建造者模式解析 118 13.6 建造者模式基本代码 119 第14章 老板回来,我不知道——观察者模式 123 14.1 老板回来?我不知道! 123 14.2 双向耦合代码 124 14.3 解耦实践一 126 14.4 解耦实践二 128 14.5 观察者模式 131 14.6 观察者模式特点 134 14.7 观察者模式不足 135 14.8 事件委托实现 136 14.9 事件委托说明 139 14.10 石守吉失手机后委托 140 第15章 就不能不换DB吗?——抽象工厂模式 141 15.1 就不能不换DB吗? 141 15.2 最基本数据访问程序 142 15.3 用了工厂方法模式数据访问程序 143 15.4 用了抽象工厂模式数据访问程序 146 15.5 抽象工厂模式 149 15.6 抽象工厂模式优点与缺点 151 15.7 用简单工厂来改进抽象工厂 151 15.8 用反射+抽象工厂数据访问程序 154 15.9 用反射+配置文件实现数据访问程序 157 15.10 无痴迷,不成功 157 第16章 无尽加班何时休——状态模式 158 16.1 加班,又是加班! 158 16.2 工作状态-函数版 159 16.3 工作状态-分类版 160 16.4 方法过长是坏味道 162 16.5 状态模式 163 16.6 状态模式好处与用处 165 16.7 工作状态-状态模式版 166 第17章 在NBA我需要翻译——适配器模式 171 17.1 在NBA我需要翻译! 171 17.2 适配器模式 171 17.3 何时使用适配器模式 174 17.4 篮球翻译适配器 174 17.5 适配器模式.NET应用 178 17.6 扁鹊医术 178 第18章 如果再回到从前——备忘录模式 180 18.1 如果再给我一次机会…… 180 18.2 游戏存进度 180 18.3 备忘录模式 183 18.4 备忘录模式基本代码 184 18.5 游戏进度备忘 186 第19章 分公司=一部门——组合模式 189 19.1 分公司不就是一部门吗? 189 19.2 组合模式 190 19.3 透明方式与安全方式 193 19.4 何时使用组合模式 194 19.5 公司管理系统 194 19.6 组合模式好处 198 第20章 想走?以!先买票——迭代器模式 200 20.1 乘车买票,不管你是谁! 200 20.2 迭代器模式 201 20.3 迭代器实现 202 20.4 .NET迭代器实现 206 20.5 迭代高手 208 第21章 有些类也需计划生育——单例模式 209 21.1 类也需要计划生育 209 21.2 判断对象是否是null 210 21.3 生还是不生是自己责任 213 21.4 单例模式 214 21.5 多线程时单例 216 21.6 双重锁定 217 21.7 静态初始化 218 第22章 手机软件何时统一——桥接模式 220 22.1 凭什么你游戏我不能玩 220 22.2 紧耦合程序演化 221 22.3 合成/聚合复用原则 225 22.4 松耦合程序 226 22.5 桥接模式 229 22.6 桥接模式基本代码 231 22.7 我要开发“好”游戏 233 第23章 烤羊肉串引来思考——命令模式 234 23.1 吃烤羊肉串! 234 23.2 烧烤摊vs.烧烤店 235 23.3 紧耦合设计 236 23.4 松耦合设计 237 23.5 松耦合后 240 23.6 命令模式 242 23.7 命令模式作用 244 第24章 加薪非要老总批?——职责链模式 245 24.1 老板,我要加薪! 245 24.2 加薪代码初步 246 24.3 职责链模式 249 24.4 职责链好处 251 24.5 加薪代码重构 252 24.6 加薪成功 256 第25章 世界需要和平——中介者模式 257 25.1 世界需要和平! 257 25.2 中介者模式 258 25.3 安理会做中介 262 25.4 中介者模式优缺点 265 第26章 项目多也别傻做——享元模式 267 26.1 项目多也别傻做! 267 26.2 享元模式 269 26.3 网站共享代码 272 26.4 内部状态与外部状态 274 26.5 享元模式应用 277 第27章 其实你不懂老板心——解释器模式 279 27.1 其实你不懂老板心 279 27.2 解释器模式 280 27.3 解释器模式好处 282 27.4 音乐解释器 283 27.5 音乐解释器实现 284 27.6 料事如神 289 第28章 男人和女人——访问者模式 291 28.1 男人和女人! 291 28.2 最简单编程实现 292 28.3 简单面向对象实现 293 28.4 用了模式实现 295 28.5 访问者模式 300 28.6 访问者模式基本代码 301 28.7 比上不足,比下有余 304 第29章 OOTV杯超级模式大赛——模式总结 305 29.1 演讲任务 305 29.2 报名参赛 305 29.3 超模大赛开幕式 306 29.4 创建型模式比赛 309 29.5 结构型模式比赛 314 29.6 行为型模式一组比赛 321 29.7 行为型模式二组比赛 325 29.8 决赛 330 29.9 梦醒时分 333 29.10 没有结束结尾 334 附 录 A 培训实习生——面向对象基础 335 A.1 培训实习生 335 A.2 类与实例 335 A.3 构造方法 337 A.4 方法重载 338 A.5 属性与修饰符 340 A.6 封装 342 A.7 继承 343 A.8 多态 347 A.9 重构 350 A.10 抽象类 353 A.11 接口 354 A.12 集合 358 A.13 泛型 360 A.14 委托与事件 362 A.15 客套 366 附 录 B 参考文献 367
基本信息 原书名 Design Patterns:Elements of Reusable Object-Oriented software 原出版社 Addison Wesley/Pearson 作者 (美)Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides [作译者介绍] 译者 李英军 马晓星 蔡敏 刘建中 丛书名 计算机科学丛书 出版社机械工业出版社 ISBN7111075757 上架时间2005-7-19 出版日期2004 年9月 开本16开 页码254 版次1-11 内容简介   本书结合设计实例从面向对象设计中精选出23个设计模式,总结了面向对象设计中最有价值经验,并且用简洁复用形式表达出来。本书分类描述了一组设计良好、表达清楚软件设计模式,这些模式在实用环境下特别有用。本书适合大学计算机专业学生、研究生及相关人员参考。       [strong][font color="#ff0000"]书评[/font][/strong][font color="#ff0000"]       “这本众人期待确达到了预期全部效果。该书云集了经过时间考验用设计。作者从多年面向对象设计经验中精选了23个模式,这构成了该书精华部份,每一个精益求精优秀程序员都应拥有这本《设计模式》。”--larry o'brien, software development       “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚面向对象软件设计模式。整个设计模式领域还很新,本书四位作者也许已占据了这个领域造诣最深专家中半数,因而他们定义模式方法以作为后来者榜样。如果要知道怎样恰当定义和描述设计模式,我们应该以从他们那儿获得启发”--steve billow, journal of object-oriented programming       “总来讲,这本书表达了一种极有价值东西。对软件设计领域有着独特贡献,因为它捕获了面向对象设计有价值经验,并且用简洁复用形式表达出来。它将成为我在寻找面向对象设计思想过程中经常翻阅一本书﹕这正是复用真实含义所在,不是吗﹖”--sanjiv gossain, journal of object-oriented programming [/font] 目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 1.2 smalltalk mvc中设计模式 3 1.3 描述设计模式 4 1.4 设计模式编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适对象 8 1.6.2 决定对象粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象实现 10 1.6.5 运用复用机制 13 1.6.6 关联运行时刻和编译时刻 结构 15 1.6.7 设计应支持变化 16 1.7 怎样选择设计模式 19 .1.8 怎样使用设计模式 20 第2章 实例研究设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 compositor和composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 monoglyph 30 2.4.3 decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建抽象 32 2.5.2 工厂类和产品类 33 2.5.3 abstract factory模式 35 2.6 支持多种窗口系统 35 2.6.1 我们是否以使用abstract factory 模式 35 2.6.2 封装实现依赖关系 35 2.6.3 window和windowimp 37 2.6.4 bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散信息 44 2.8.2 封装访问和遍历 45 2.8.3 iterator类及其子类 46 2.8.4 iterator模式 4
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值