《Design Patterns》是一本由Erich Gamma / Richard Helm / Ral著作,Addison-Wesley Professional出版的Hardcover图书,本书定价:$54.99,页数:416,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《Design Patterns》精选点评:
●不愧为经典
●软件工程人员必修
●Design patterns的内功心法,23个patterns在三个category. 希望能教授这门课!这是门艺术!
●设计模式的经典~
●An amazingly handy handbook for conceptualizing and developing design patterns.
●A must read for all software engineers. It did not make much sense when I read it at school, but made tons of sense now
●经典中经典。有些pattern还是太简单了,但作为程序的building block...还是有用的。
●虽然只是挑了几个章节来读,但已经确定这是读过的关于设计模式的书籍中相当好的一本。不像外国的头大系列,也不像国内大话系列,那些都太浮夸了。这本就是那么的简明•实用!
●还会看的 常看常新
●罗列式、死记硬背式的写法,毁了一本好书。推荐启发式的《敏捷软件开发》
《Design Patterns》读后感(一):对各种现象的解决方案
花了一个月时间,把英文版大致过了一遍。由于有一些失败的编程经历,大致还是能够理解作者的用意的。个人喜欢先看motivation,structure和sample code,再回过头看讨论。
有点遗憾的是书中对各个模式的横向对比做得不够。有些地方容易混淆,有些场合的名词太过空洞。或许只有在反复阅读和实践中去领悟吧。
《Design Patterns》读后感(二):经典著作,真棒
之前看过若干本设计模式的书,大都是矫柔造作的例子,长篇累牍的废话,不清不楚的论述。往往翻看数页仍然不知所云,云里雾里。
相较而言,本书对于模式的论述可谓拳拳到肉,酣畅淋漓。所采用的例子也是从现实项目中抽取出来的,更加贴近设计模式的现实使用场景。快哉!快哉!
本以为知识密度如此大的书势必枯燥的紧,但没想到翻看数百页却欲罢不能。
《Design Patterns》读后感(三):很棒的书——学术界和工业界相互促进
刚看完。
这本书貌似也有些争议,但是争议不是太大,主要是泛函编程的支持者,特别是lisp的程序员,意思是大概是很多东西在lisp这些语言里面都很容易实现,没必要搞这么麻烦。不过OO当年成为编程的主流是有原因的。有些软件,例如登火星之类的,就目前看,不是10个lisper就能完成的,还是需要IBM的“人浪”战术。
我感觉这本书棒在当年那个工业界感到迷茫的时候,学术界出来了相应的研究。就今天看,design pattern对工业界的贡献非常大。
对于程序员来说,熟悉熟悉design pattern,起码看别人代码的时候容易很多,而且自己写代码的时候也会注意到结构设计。
记得本科的时候看了个开头,就看不下去了,体会不到内在的意义。最近经受了数百篇论文的压榨,后头来看这些东西觉得很有意思,也没觉得什么地方难以理解。
总之,好书!
《Design Patterns》读后感(四):真不知道看了多少遍我才有勇气跟自己说我算是读过了
真不知道看了多少遍我有勇气跟自己说我算是读过了. 期间也读了些其他讨论OOD的书, 这本算是最"干"的.
更多时候那些模式不是自己刻意去使用的, 要嘛是从别人代码里"读出来的", 要嘛就是自己通过朴素的方法(分析->最直接的实现->重构)"渐渐浮现出来的", 自己刻意去套用的情况只出现在一开始乐此不疲地尝试各种模式的时候.
对我而言, 获益有:
1. 通过识别模式快速了解作者的意图;
2. 方便交流(包括和自己对话), 简化了对"问题-设计-利弊"的描述, 为什么name是pattern的四要素, 一个name包含了太多的信息.
3. SOLID原则记心间, 刻意地去忘掉具体的模式, 让设计原则在背后悄悄的影响着自己在设计实现中的一个个小决定.
《Design Patterns》读后感(五):毁了一代工程师
在支持函数式的动态语言里, 绝大多数design pattern都变的简单直接,以至于你甚至感觉不到它们的存在。
在面向对象的限制之下,敞开的大门不走,偏要爬窗户。
比如strategy pattern的本意是通过composition而非inheritance,使能够在运行时(runtime)动态绑定某对象的成员方法。
就像游戏里某个actor能够在各种attack() 方法之间自由的切换,如使用手枪,手雷,狙。
在动态语言里直接把attack函数赋值给actor就可以了,根本没有什么pattern可言。
在Java/C++里却必须把attack函数包装成behavior object才能赋值给actor。
command pattern也类似,可以参照以下Erlang的message passing。
Google研院的Peter Norvig大叔总结了23个design pattern在lisp/python等函数式语言之下的对应物。
引用如下
=====================================================
16 of 23 patterns are either invisible or simpler, due to:
First-class types (6): Abstract-Factory, Flyweight, Factory-Method, State, Proxy, Chain-Of-Responsibility
First-class functions (4): Command, Strategy, Template-Method, Visitor
Macros (2): Interpreter, Iterator
Method Combination (2): Mediator, Observer
Multimethods (1): Builder
Modules (1): Facade
=====================================================
总结:
Design Pattern揭露了OOP系统本身的不灵活