无名图书
收藏
Design Patterns
Erich Gamma
出版社
Addison Wesley
出版时间
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
你可能会关注的书籍
Hands-on Design Patterns with Kotlin
Alexey Soshin
Machine Learning Design Patterns
Valliappa Lakshmanan, Sara Robinson, Michael Munn
Spring 5 Design Patterns
Dinesh Rajput
Mastering JavaScript Design Patterns - Second Edition
Simon Timms
Learning JavaScript Design Patterns
Addy Osmani
Addison Wesley的其他书籍
查看全部
Compilers
Alfred V. Aho
Introduction to Econometrics
James H. Stock, Mark W. Watson
Linear Algebra and Its Applications
Stephen H. Friedberg, David C. Lay
Java Software Solutions
John Lewis, William Loftus
Fundamentals of Database Systems
Ramez Elmasri, Shamkant B. Navathe
ARM System-on-Chip Architecture (2nd Edition)
Steve Furber
下载
收藏