新書推薦:
《
何以大明:历史的局内人与旁观者(一部充满人性温度与历史洞察的大明群像史诗;十八位人物,帝王、巨富、权宦、狂士、文人、英雄……他们是历史的书写者,也是历史的旁观者;明史学者章宪法最新力作。)
》
售價:NT$
454.0
《
新民说·管理者为何重要:无老板公司的险境
》
售價:NT$
449.0
《
宇宙(第二卷) 科学元典丛书
》
售價:NT$
500.0
《
了不起的创作者:保持创造力的10堂启发课
》
售價:NT$
301.0
《
爱得太多的父母:14组家庭,20年追踪的家庭教育调查实录
》
售價:NT$
305.0
《
人偶游戏(东野圭吾竟然写过这种惊悚悬疑之作)
》
售價:NT$
305.0
《
自然、权利与正义(重思古典自然法 探索人类生活的永恒根基)
》
售價:NT$
347.0
《
汗青堂丛书155·糖与现代世界的塑造:种植园、奴隶制与全球化
》
售價:NT$
551.0
編輯推薦:
本书是软件工程领域的经典名著,引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位顶尖的面向对象领域专家精心选取了颇具价值的设计实践,加以分类整理和命名,并用简洁而易于复用的形式表达出来。本书已经成为面向对象技术人员的词典,书中定义的23个模式逐渐成为开发界技术交流所的基础知识和词汇。
內容簡介:
本书结合设计实例从面向对象的设计中精选出23个设计模式, 总结了面向对象设计中最有价值的经验, 并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、 表达清楚的软件设计模式, 这些模式在实用环境下特别有用。 本书适合大学计算机专业的学生、研究生及相关人员参考。
關於作者:
埃里克·伽玛(Erich Gamma) 在瑞士苏黎世大学获得计算机科学博士学位。他与Kent Beck合作开发了单元测试框架JUnit,并领导了Eclipse Java Development Tools项目。他还曾是IBM Rational Jazz项目的主要成员。2011年,Gamma以杰出工程师(Distinguished Engineer)的身份加入微软Visual Studio团队,领导微软位于瑞士苏黎世的实验室。 理查德·赫尔姆(Richard Helm) 在澳大利亚墨尔本大学获得计算机科学博士学位,曾在IBM T. J. Watson担任研究员,并在澳大利亚开创了IBM面向对象技术研究分部。 拉尔夫·约翰逊(Ralph Johnson) 在美国康奈尔大学获得计算机科学博士学位,伊利诺伊大学教授,在模式、重构等领域均有很高造诣。 约翰·威利斯迪斯(John Vlissides) 在美国斯坦福大学获得计算机科学博士学位,是IBM T. J. Watson研究中心的研究员。
目錄 :
目录 赞誉 序言 前言 读者指南 第1章 引言 ┊1 1.1 什么是设计模式 ┊3 1.2 Smalltalk MVC中的设计模式 ┊4 1.3 描述设计模式 ┊6 1.4 设计模式的编目 ┊7 1.5 组织编目 ┊8 1.6 设计模式怎样解决设计问题 ┊10 1.6.1 寻找合适的对象 ┊10 1.6.2 决定对象的粒度 ┊11 1.6.3 指定对象接口 ┊11 1.6.4 描述对象的实现 ┊12 1.6.5 运用复用机制 ┊15 1.6.6 关联运行时和编译时的结构 ┊18 1.6.7 设计应支持变化 ┊19 1.7 怎样选择设计模式 ┊22 1.8 怎样使用设计模式 ┊24 第2章 实例研究:设计一个文档 编辑器 ┊25 2.1 设计问题 ┊27 2.2 文档结构 ┊27 2.2.1 递归组合 ┊28 2.2.2 图元 ┊29 2.2.3 组合模式 ┊31 2.3 格式化 ┊31 2.3.1 封装格式化算法 ┊31 2.3.2 Compositor和Composition ┊32 2.3.3 策略模式 ┊33 2.4 修饰用户界面 ┊34 2.4.1 透明围栏 ┊34 2.4.2 MonoGlyph ┊35 2.4.3 Decorator模式 ┊36 2.5 支持多种视感标准 ┊37 2.5.1 对象创建的抽象 ┊37 2.5.2 工厂类和产品类 ┊38 2.5.3 Abstract Factory 模式 ┊40 2.6 支持多种窗口系统 ┊40 2.6.1 是否可以使用Abstract Factory模式 ┊40 2.6.2 封装实现依赖关系 ┊41 2.6.3 Window和WindowImp ┊43 2.6.4 Bridge模式 ┊46 2.7 用户操作 ┊46 2.7.1 封装一个请求 ┊47 2.7.2 Command类及其子类 ┊47 2.7.3 撤销和重做 ┊48 2.7.4 命令历史记录 ┊49 2.7.5 Command模式 ┊50 2.8 拼写检查和断字处理 ┊50 2.8.1 访问分散的信息 ┊51 2.8.2 封装访问和遍历 ┊51 2.8.3 Iterator类及其子类 ┊52 2.8.4 Iterator模式 ┊55 2.8.5 遍历和遍历过程中的动作 ┊55 2.8.6 封装分析 ┊56 2.8.7 Visitor类及其子类 ┊59 2.8.8 Visitor模式 ┊60 2.9 小结 ┊60 第3章 创建型模式 ┊62 3.1 Abstract Factory(抽象工厂)—对象创建型模式 ┊66 3.2 Builder(生成器)—对象创建型模式 ┊74 3.3 Factory Method(工厂方法)—对象创建型模式 ┊81 3.4 Prototype(原型)—对象创建型模式 ┊89 3.5 Singleton(单件)—对象创建型模式 ┊96 3.6 创建型模式的讨论 ┊102 第4章 结构型模式 ┊104 4.1 Adapter(适配器)—类对象结构型模式 ┊106 4.2 Bridge(桥接)—对象结构型模式 ┊115 4.3 Composite(组合)—对象结构型模式 ┊123 4.4 Decorator(装饰)—对象结构型模式 ┊132 4.5 Facade(外观)—对象结构型模式 ┊139 4.6 Flyweight(享元)—对象结构型模式 ┊146 4.7 Proxy(代理)—对象结构型模式 ┊155 4.8 结构型模式的讨论 ┊164 4.8.1 Adapter与Bridge ┊164 4.8.2 Composite、Decorator与Proxy ┊164 第5章 行为型模式 ┊166 5.1 Chain of Responsibility(职责链)—对象行为型模式 ┊167 5.2 Command(命令)—对象行为型模式 ┊175 5.3 Interpreter(解释器)—类行为型模式 ┊183 5.4 Iterator(迭代器)—对象行为型模式 ┊193 5.5 Mediator(中介者)—对象行为型模式 ┊205 5.6 Memento(备忘录)—对象行为型模式 ┊212 5.7 Observer(观察者)—对象行为型模式 ┊219 5.8 State(状态)—对象行为型模式 ┊227 5.9 Strategy(策略)—对象行为型模式 ┊234 5.10 Template Method(模板方法)— 类行为型模式 ┊242 5.11 Visitor(访问者)—对象行为型 模式 ┊246 5.12 行为型模式的讨论 ┊256 5.12.1 封装变化 ┊256 5.12.2 对象作为参数 ┊257 5.12.3 通信应该被封装还是被分布 ┊257 5.12.4 对发送者和接收者解耦 ┊258 5.12.5 总结 ┊260 第6章 结论 ┊261 6.1 设计模式将带来什么 ┊262 6.1.1 一套通用的设计词汇 ┊262 6.1.2 书写文档和学习的辅助手段 ┊263 6.1.3 现有方法的一种补充 ┊263 6.1.4 重构的目标 ┊264 6.2 本书简史 ┊265 6.3 模式界 ┊266 6.3.1 Alexander的模式语言 ┊266 6.3.2 软件中的模式 ┊267 6.4 邀请参与 ┊267 6.5 临别感想 ┊268 附录A 词汇表 ┊269 附录B 图示符号指南 ┊273 附录 C 基本类 ┊277 参考文献 ┊284
內容試閱 :
前言 本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对这些概念了然于胸,而不是迫不及待地翻阅手头的字典。 另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活、可复用的软件而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。 设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这有时也许会比特殊的解法多费一些工夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。 一旦理解了设计模式并且有了一种“Aha!”(而不是“Huh?”)的应用经验和体验后,你将用一种非同寻常的方式思考面向对象设计。你将拥有一种深刻的洞察力,以帮助你设计出更加灵活的、模块化的、可复用的和易理解的软件—这也是你着迷于面向对象技术的原因,不是吗? 当然还有一些提示和鼓励:第一次阅读本书时你可能不会完全理解它,但不必着急,我们在起初编写这本书时也没有完全理解它们!请记住,这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅本书,以获取设计灵感。 我们并不认为这组设计模式是完整的和一成不变的,它只是我们目前对设计的思考的记录。因此我们欢迎广大读者进行批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过Addison-Wesley写信给我们,或发送电子邮件到design-patterns@cs.uiuc.edu。你还可以发送邮件“send design pattern source”到design-patterns-source@cs.uiuc.edu获取书中的示例代码部分的源代码。 另外我们有一个专门的网页报道最新的消息与更新: http://st-www.cs.uiuc.edu/users/patterns/DPBook/DPBook.html E. G. 于加州Mountain View R. H. 于蒙特利尔 R. J. 于伊利诺伊Urbana J. V. 于纽约 Hawthorne 1994年8月