《代码大全2》(英文限量珍藏版)《程序员修炼之道》《计算机程序的构造和解释》《C程序设计语言》《算法导论》《重构 改善既有代码的设计》《人月神话》《设计模式》(典藏版)《计算机程序设计艺术》《编译原理》《深入浅出设计模式》《代码整洁之道》《编程珠玑》《修改软件的艺术》《编码:隐匿在计算机软硬件背后的语言》《黑客与画家》《深入理解计算机系统》《HTTP权威指南》《重来》《集体智慧编程》《活着》《编程之美》《程序员思维修炼》《系统化思维导论》《大话数据结构》《UNIX网络编程》《高性能Linux服务器运维实战》《TCP/IP详解》《计算机网络:自顶向下方法》《UNIX环境高级编程》《程序员的自我修养》《数据密集型应用系统设计》《现代操作系统》《操作系统真象还原》《Windows核心编程》《深入理解LINUX内核》《传世经典书丛:UNIX编程艺术》《清醒思考的艺术》《C和指针》《C专家编程》《C 陷阱与缺陷》《C++ Primer Plus》《STL源码剖析》《Effective C++》《深度探索C++对象模型》《Java核心技术》《Effective Java中文版》《深入理解Java虚拟机》《Java并发编程实战》《轻量级Java Web整合开发》《精通Spring》《Java编程思想》《Java性能权威指南》《大话设计模式》《图解HTTP》《Redis实战》《Redis设计与实现》《高性能MySQL》《鸟哥的Linux私房菜》《Spring Cloud Alibaba微服务原理与实战》《第一本Docker书》《MySQL必知必会》《MySQL技术内幕:InnoDB存储引擎》《深入浅出MySQL》《SQL基础教程》《CSS权威指南》《CSS揭秘》《CSS世界》《Head First HTML与CSS》《零基础学HTML5+CSS3》《HTML5+CSS3+JavaScript从入门到精通》《JavaScript DOM编程艺术》《JavaScript高级程序设计》《JavaScript语言精粹》《你不知道的JavaScript 》《JavaScript设计模式与开发实践》《ES6标准入门》《深入理解ES6》《高性能JavaScript》《数据结构与算法JavaScript描述》《JavaScript ES6 函数式编程入门经典》《HTML5权威指南》《锋利的jQuery》《深入React技术栈》《React状态管理与同构实战》《React进阶之路》《React学习手册》《React Native移动开发实战》《React+Redux前端开发实战》《Spring Boot+Vue全栈开发实战》《Vue.js项目实战》《Vue.js入门与商城开发实战》《Vue.js 从入门到实战》《Vue.js实战》《深入浅出Node.js》《Node.js实战》《Node.js无服务器应用实战》《Node与Express开发》《编写可维护的JavaScript》《大型网站技术架构 核心原理与案例分析》《Web性能权威指南》《点石成金》

《设计模式》(典藏版)

点击购买

这本书结合设计实作例从面向对象的设计中精选出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

前言/序言

本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”继承与“实现”继承的关系时,你应该对这些概念了然于胸,而不是迫不及待地翻阅手头的字典。
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活、可复用的软件而长时间进行的艰苦努力。设计模式捕获了这些解决方案,并用简洁易用的方式表达出来。
设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性和可复用性,多做些工作是值得的。
一旦理解了设计模式并且有了一种“Aha!”(而不是“Huh?”)的应用经验和体验后,你将用一种非同寻常的方式思考面向对象设计。你将拥有一种深刻的洞察力,以帮助你设计出更加灵活的、模块化的、可复用的和易理解的软件—这也是你着迷于面向对象技术的原因,不是吗?
当然还有一些提示和鼓励:第一次阅读此书时你可能不会完全理解它,但不必着急,我们在起初编写这本书时也没有完全理解它们!请记住,这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅此书,以获取设计灵感。
我们并不认为这组设计模式是完整的和一成不变的,它只是我们目前对设计的思考的记录。因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。

链接: https://www.fly63.com/course/26_1150