Design Patterns

Erich Gamma

出版时间

1994-10-31

ISBN

9780201633610

评分

★★★★★

标签

编程

书籍介绍
这不是一本读一遍就能上手的工具书。许多读者买了多年、翻过数遍,仍觉得只懂了半瓶水;直到某个毫无准备的时刻,那些模式才忽然「行云流水」般贯通。它的价值恰恰在于此:23个模式不是孤立的技巧,而是一套反复锤炼过的设计智慧,逼着你把「为什么这样设计」想透。书中最耐人寻味的,是它教你如何在封装、粒度、依赖、复用等互相冲突的因素间权衡,将系统分解为对象集合——这才是面向对象设计真正的难点。它适合两类人:一类是想让软件「还能维护」的工程实践者,一类愿把它当手册随时查阅。但请放下「速成」的期待,它更像一场关于设计的自省。
作者简介
四位作者均是国际公认的面向对象软件领域的专家。 Erich Gamma博士是瑞士苏黎士国际面向对象技术软件中心的技术主管。 Richard Helm博士是澳大利亚悉尼IBM顾问集团公司面向对象技术公司的成员。 Ralph Johnson博士是Urbana-Champaign伊利诺大学计算机科学系成员。 John Vlissides博士是位于纽约Hawthorne的IBN托马斯J.沃森研究中心的研究人员。
AI导读
核心看点
  • 总结23种经典设计模式,是软件工程领域的开山鼻祖之作。
  • 提炼面向对象设计经验,提供可复用、经过验证的解决方案。
  • 强调针对接口编程与对象组合,提升系统灵活性与可维护性。
读者共识
  • 被誉为设计模式圣经,地位崇高,但学术风格导致阅读门槛高。
  • 初读往往不知所云,需有失败开发经历后重读方能顿悟其价值。
  • 适合作为案头手册查阅,配合通俗教程辅助学习效果更佳。
精彩摘录
  • "将系统分解成对象集合。因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。"
  • "类型(type) 是用来标识特定接口的一个名字。"
  • "动态绑定是指发送的请求直到运行时刻才受你的具体的实现的约束。"
  • "进一步讲,动态绑定允许你在运行时刻彼此替换有相同接口的对象。这种可替换性就称为多态(polymorphism),它是面向对象系统中的核心概念之一。"
  • "抽象类(abstract class)(与之对应的还有非抽象类称为具体类(concrete class)。)的主要目的是为它的子类定义公共接口。一个抽象类将把它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能被实例化。"
  • "子类能够改进和重新定义它们父类的操作。更具体地说,类能够重定义(override)父类定义的操作,重定义使得子类能接管父类对请求的处理操作。"
  • "混入类(mixin class)是给其他类提供可选择的接口或功能的类。它与抽象类一样不能实例化。混入类要求多继承"
  • "针对接口编程,而不是针对实现编程。"
目录
Preface
Foreword
Guide to Readers
1. Introduction
1.1. What Is a Design Pattern?

显示全部
用户评论
经典中经典。有些pattern还是太简单了,但作为程序的building block...还是有用的。
這是一個 problem-solution 的列表,如果你要解決的問題和書中提到的類似,不妨參考下它提出的解決方案。
如果觉得收获不大,可以看看:addison wesley出版的applying uml and patterns - an introduction to object-oriented analysis。根据这个书做了一个图文混排编辑器,支持多columns,还是有收获的。
Currently studying the Decorator pattern (p. 179). And Decorator vs. Strategy pattern.
公司内部培训中读完
当历史书看是考古,当技术书看是糟粕。 果然有些事情还是上手比空谈有意义…… 不过也了解到了以前时代的软件设计,一个C 语言啥都能写,因为语言的限制还需此书研究茴字有几种写法,而如今各个语言在各自的领域不断深耕发展,当今的程序世界真的是百花齐放。
原始本了
我觉得代码写多了,大部分模式都能自己摸索出来。看这本书的好处在于,了解某些约定俗成的东西对看项目源码特别有帮助。(2021-09-12)
spring 2021
下载
收藏