具体描述
本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GOF(设计模式的经典名著——Design Patterns:Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者EIich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF)总结的23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式的全面总结,附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。本书的特色是通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解——为什么这样设计才是好的?是怎样想到这样设计的?以达到不但授之以“鱼”,还授之以“渔”的目的。引导读者体会设计演变过程中蕴藏的了、智慧。 本书适合编程初学者或希望在面向对象编程上有所提高的开发人员阅读。
作者简介
程杰:高级软件工程师 & 高级培训讲师。从事软件开发一线工作近八年时间。曾在申银万国证券公司、上海杨浦区政府、朝华集团下属网游公司、香港晨兴集团等多行业项目开发中担任主程及项目负责人,有丰富的大中型软件开发经验,以及多年的软件设计与项目管理经验。曾任加拿大慧桥培训中心金牌讲师,主持.NET高级软件工程师的培训工作;早年从事高中数学教学工作,曾在江苏常州重点高中任教时获得过市教学一等奖,这些教学和培训经历让作者对如何以易懂的语言讲解艰深的技术知识有了深刻的理解。
本书作者集多年实际项目开发经验和丰富教学培训经验于一身,准确把握住编程初学者的视角,以浅显幽默的语言向读者诠释了面向对象设计模式的精髓。
目录信息
1.1 面试受挫 1
1.2 初学者代码毛病 2
1.3 代码规范 2
1.4 面向对象编程 4
1.5 活字印刷,面向对象 4
1.6 面向对象的好处 5
1.7 复制vs.复用 6
1.8 业务的封装 6
1.9 紧耦合vs.松耦合 8
1.10 简单工厂模式 10
1.11 UML类图 12
第2章 商场促销——策略模式 17
2.1 商场收银软件 17
2.2 增加打折 18
2.3 简单工厂实现 19
2.4 策略模式 22
2.5 策略模式实现 25
2.6 策略与简单工厂结合 27
2.7 策略模式解析 28
第3章 拍摄UFO——单一职责原则 30
3.1 新手机 30
3.2 拍摄 30
3.3 没用的东西 31
3.4 单一职责原则 31
3.5 方块游戏的设计 31
3.6 手机职责过多吗? 33
第4章 考研求职两不误——开放-封闭原则 34
4.1 考研失败 34
4.2 开放-封闭原则 35
4.3 何时应对变化 36
4.4 两手准备,并全力以赴 37
第5章 会修电脑不会修收音机?——依赖倒转原则 38
5.1 MM请求修电脑 38
5.2 电话遥控修电脑 39
5.3 依赖倒转原则 40
5.4 里氏代换原则 41
5.5 修收音机 43
第6章 穿什么有这么重要?——装饰模式 44
6.1 穿什么有这么重要? 44
6.2 小菜扮靓第一版 45
6.3 小菜扮靓第二版 47
6.4 装饰模式 50
6.5 小菜扮靓第三版 53
6.6 装饰模式总结 56
第7章 为别人做嫁衣——代理模式 57
7.1 为别人做嫁衣! 57
7.2 没有代理的代码 58
7.3 只有代理的代码 60
7.4 符合实际的代码 61
7.5 代理模式 63
7.6 代理模式应用 65
7.7 秀才让小六代其求婚 66
第8章 雷锋依然在人间——工厂方法模式 67
8.1 再现活雷锋 67
8.2 简单工厂模式实现 68
8.3 工厂方法模式实现 69
8.4 简单工厂vs.工厂方法 71
8.5 雷锋工厂 72
第9章 简历复印——原型模式 77
9.1 夸张的简历 77
9.2 简历代码初步实现 78
9.3 原型模式 80
9.4 简历的原型实现 82
9.5 浅复制与深复制 84
9.6 简历的深复制实现 87
9.7 复制简历vs.手写求职信 89
第10章 考题抄错会做也白搭——模板方法模式 90
10.1 选择题不会做,蒙呗! 90
10.2 重复=易错+难改 91
10.3 提炼代码 93
10.4 模板方法模式 96
10.5 模板方法模式特点 98
10.6 主观题,看你怎么蒙 98
第11章 无熟人难办事?——迪米特法则 100
11.1 第一天上班 100
11.2 无熟人难办事 100
11.3 迪米特法则 102
第12章 牛市股票还会亏钱?——外观模式 103
12.1 牛市股票还会亏钱? 103
12.2 股民炒股代码 104
12.3 投资基金代码 106
12.4 外观模式 108
12.5 何时使用外观模式 110
第13章 好菜每回味不同——建造者模式 112
13.1 炒面没放盐 112
13.2 建造小人一 113
13.3 建造小人二 114
13.4 建造者模式 115
13.5 建造者模式解析 118
13.6 建造者模式基本代码 119
第14章 老板回来,我不知道——观察者模式 123
14.1 老板回来?我不知道! 123
14.2 双向耦合的代码 124
14.3 解耦实践一 126
14.4 解耦实践二 128
14.5 观察者模式 131
14.6 观察者模式特点 134
14.7 观察者模式的不足 135
14.8 事件委托实现 136
14.9 事件委托说明 139
14.10 石守吉失手机后的委托 140
第15章 就不能不换DB吗?——抽象工厂模式 141
15.1 就不能不换DB吗? 141
15.2 最基本的数据访问程序 142
15.3 用了工厂方法模式的数据访问程序 143
15.4 用了抽象工厂模式的数据访问程序 146
15.5 抽象工厂模式 149
15.6 抽象工厂模式的优点与缺点 151
15.7 用简单工厂来改进抽象工厂 151
15.8 用反射+抽象工厂的数据访问程序 154
15.9 用反射+配置文件实现数据访问程序 157
15.10 无痴迷,不成功 157
第16章 无尽加班何时休——状态模式 158
16.1 加班,又是加班! 158
16.2 工作状态-函数版 159
16.3 工作状态-分类版 160
16.4 方法过长是坏味道 162
16.5 状态模式 163
16.6 状态模式好处与用处 165
16.7 工作状态-状态模式版 166
第17章 在NBA我需要翻译——适配器模式 171
17.1 在NBA我需要翻译! 171
17.2 适配器模式 171
17.3 何时使用适配器模式 174
17.4 篮球翻译适配器 174
17.5 适配器模式的.NET应用 178
17.6 扁鹊的医术 178
第18章 如果再回到从前——备忘录模式 180
18.1 如果再给我一次机会…… 180
18.2 游戏存进度 180
18.3 备忘录模式 183
18.4 备忘录模式基本代码 184
18.5 游戏进度备忘 186
第19章 分公司=一部门——组合模式 189
19.1 分公司不就是一部门吗? 189
19.2 组合模式 190
19.3 透明方式与安全方式 193
19.4 何时使用组合模式 194
19.5 公司管理系统 194
19.6 组合模式好处 198
第20章 想走?可以!先买票——迭代器模式 200
20.1 乘车买票,不管你是谁! 200
20.2 迭代器模式 201
20.3 迭代器实现 202
20.4 .NET的迭代器实现 206
20.5 迭代高手 208
第21章 有些类也需计划生育——单例模式 209
21.1 类也需要计划生育 209
21.2 判断对象是否是null 210
21.3 生还是不生是自己的责任 213
21.4 单例模式 214
21.5 多线程时的单例 216
21.6 双重锁定 217
21.7 静态初始化 218
第22章 手机软件何时统一——桥接模式 220
22.1 凭什么你的游戏我不能玩 220
22.2 紧耦合的程序演化 221
22.3 合成/聚合复用原则 225
22.4 松耦合的程序 226
22.5 桥接模式 229
22.6 桥接模式基本代码 231
22.7 我要开发“好”游戏 233
第23章 烤羊肉串引来的思考——命令模式 234
23.1 吃烤羊肉串! 234
23.2 烧烤摊vs.烧烤店 235
23.3 紧耦合设计 236
23.4 松耦合设计 237
23.5 松耦合后 240
23.6 命令模式 242
23.7 命令模式作用 244
第24章 加薪非要老总批?——职责链模式 245
24.1 老板,我要加薪! 245
24.2 加薪代码初步 246
24.3 职责链模式 249
24.4 职责链的好处 251
24.5 加薪代码重构 252
24.6 加薪成功 256
第25章 世界需要和平——中介者模式 257
25.1 世界需要和平! 257
25.2 中介者模式 258
25.3 安理会做中介 262
25.4 中介者模式优缺点 265
第26章 项目多也别傻做——享元模式 267
26.1 项目多也别傻做! 267
26.2 享元模式 269
26.3 网站共享代码 272
26.4 内部状态与外部状态 274
26.5 享元模式应用 277
第27章 其实你不懂老板的心——解释器模式 279
27.1 其实你不懂老板的心 279
27.2 解释器模式 280
27.3 解释器模式好处 282
27.4 音乐解释器 283
27.5 音乐解释器实现 284
27.6 料事如神 289
第28章 男人和女人——访问者模式 291
28.1 男人和女人! 291
28.2 最简单的编程实现 292
28.3 简单的面向对象实现 293
28.4 用了模式的实现 295
28.5 访问者模式 300
28.6 访问者模式基本代码 301
28.7 比上不足,比下有余 304
第29章 OOTV杯超级模式大赛——模式总结 305
29.1 演讲任务 305
29.2 报名参赛 305
29.3 超模大赛开幕式 306
29.4 创建型模式比赛 309
29.5 结构型模式比赛 314
29.6 行为型模式一组比赛 321
29.7 行为型模式二组比赛 325
29.8 决赛 330
29.9 梦醒时分 333
29.10 没有结束的结尾 334
附 录 A 培训实习生——面向对象基础 335
A.1 培训实习生 335
A.2 类与实例 335
A.3 构造方法 337
A.4 方法重载 338
A.5 属性与修饰符 340
A.6 封装 342
A.7 继承 343
A.8 多态 347
A.9 重构 350
A.10 抽象类 353
A.11 接口 354
A.12 集合 358
A.13 泛型 360
A.14 委托与事件 362
A.15 客套 366
附 录 B 参考文献 367
· · · · · · (收起)
读后感
最初是在博客园上看到该作者关于设计模式的文章,笔触另类深入浅出的,一看就很有兴趣继续看下去,之后和作者在网上聊了聊觉得他的确是个经验丰富并且有自己的一套思想的,了解后果然他曾经当过人民教师并且在IT培训方面有不少心得。以书中做比我虽然有程序基础目前也从业,但...
这是我读的第二本设计模式的书,第一本是Head first设计模式,毕竟我是学的C#,所以看着Java代码还是有些不大舒服,后来就接触了这本大话设计模式。 从第一章读到了最后,例子很生动,有些例子略显牵强,但还是表现出了这个设计模式的核心内容。 然后我这本书反复看的三四遍,...
先读的《head first设计模式》,讲的很好,但总是被各种咖啡搞晕掉。 最近读了《大话设计模式》,觉得很适合国内的情况,举的例子很贴近自己,不过也是偏简单,作为入门书不错。 ---2014/03/13
第一感觉,很生动.像哄小孩看书一样的生动.但总是很浅薄, 相对来说,没有讲到实质性的的东西,例子也是牵强附会.虽有创意,但还是没什么意思. 读读Patterns of Enterprise Application Architecture就知道其实这个大话其实绕来绕去也没有把一些很关键的东西讲清楚
用户评价
这是一本能够“点醒”你的设计模式书籍。我一直认为设计模式是软件开发中的“内功心法”,但之前苦于没有好的入门书籍。《大话设计模式》彻底改变了我的看法。作者的讲解方式非常具有启发性,他不会直接告诉你“这个模式是什么”,而是先抛出一个问题,让你思考,然后引出设计模式作为解决方案。这种方式让我主动去思考,而不是被动接受。我尤其喜欢书中对于“装饰器模式”的讲解,作者用“给咖啡加糖加奶”的比喻,生动地展示了如何在不修改原有对象的情况下,动态地给对象添加功能。这比我之前看到的任何解释都要清晰。而且,书中对于“桥梁模式”的讲解,也让我理解了如何将抽象和实现分离,避免类的爆炸式增长。这本书不仅仅是讲解设计模式,它更是在传授一种“思考问题”和“解决问题”的方式。它让我明白,设计模式不是为了用而用,而是为了解决实际问题,提升代码的质量和可维护性。我强烈推荐给所有想要深入理解设计模式的开发者,这本书绝对会让你受益匪浅。
这本《大话设计模式》真是让人醍醐灌顶!我之前接触过一些设计模式的零散知识,总觉得碎片化,不成体系。读完这本书,我感觉像是打通了任督二脉,所有的概念都清晰起来,逻辑也变得连贯。作者的讲解方式非常生动有趣,不像我之前看过的那些枯燥的技术文档,他用了大量生活中的例子来比喻,比如“工厂模式”讲到如何去餐馆点餐,不同服务员(工厂)如何给你不同的菜品(产品),这个比喻一下子就让我理解了抽象工厂和具体工厂的区别。还有“单例模式”讲到人生中只有一个太阳,不能有两个,虽然简单,但却把核心思想传达得淋漓尽致。我尤其喜欢书中对于“为什么要有设计模式”的探讨,它不仅仅是教你“怎么用”,更重要的是让你理解“为什么要用”,以及在什么场景下使用最合适。书中的代码示例也是我学习的重点,它不仅仅展示了模式的应用,还包含了对代码结构、可读性、可维护性的考量,这对于我这个初学者来说,非常有指导意义。我甚至开始尝试在自己的项目中应用这些模式,虽然刚开始会有点生疏,但很快就体会到了代码变得更加优雅、易于扩展的好处。这本书绝对是初学者入门设计模式的首选,强烈推荐!
在我看来,《大话设计模式》是一本真正“懂”设计模式的书。它没有卖弄高深的理论,而是用一种非常亲切的方式,把复杂的设计模式变得通俗易懂。我喜欢作者在讲解每个模式时,都会先从一个实际问题入手,然后引出相应的设计模式来解决这个问题,这种“问题-解决方案”的逻辑非常清晰。比如,在讲“策略模式”时,作者先描述了在游戏中,不同角色的移动方式可能不同,如何设计一个灵活的移动系统,然后自然而然地引出了策略模式,通过定义不同的移动策略类,让角色可以轻松切换移动方式。书中还花了很大的篇幅去讲解“设计模式的分类”以及“七大设计原则”对设计模式的影响,这使得我对设计模式有了更宏观的认识。它不再是一个个孤立的知识点,而是构成了一个有机的整体。而且,作者对于代码的讲解非常细致,每一个类的作用,每一个方法的逻辑都解释得非常清楚,并且给出了多种实现方式的对比,帮助读者理解不同实现方式的优劣。这本书让我真正体会到了“闻道有先后,术业有专攻”,在设计模式这条路上,这本书绝对是我的引路人。
这本书的阅读体验非常独特,有一种“信手拈来”的感觉。我之前尝试过很多关于设计模式的书籍,要么过于理论化,要么过于碎片化,让人望而却步。但《大话设计模式》完全不同,它就像是一位经验丰富的老友,带着你漫步在软件设计的花园里,娓娓道来。作者的语言风格非常接地气,夹杂着一些幽默感,读起来一点也不累,反而充满了乐趣。他对于每个设计模式的讲解,都不仅仅局限于定义和代码,而是深入到模式背后的思想和解决的问题。我印象最深的是关于“观察者模式”的讲解,作者用了一个“粉丝关注偶像”的比喻,粉丝(观察者)不需要主动去问偶像(主题)有没有更新,只要订阅了偶像的动态,一有消息就会自动收到,这完美地解释了发布-订阅机制的核心。此外,书中还穿插了一些关于“面向对象设计原则”的介绍,比如“开闭原则”、“里氏替换原则”等等,这些原则和设计模式是相辅相成的,理解了它们,再去看设计模式的应用,就更加透彻了。这本书的排版也很好,图文并茂,代码清晰,很容易跟随作者的思路进行学习。我毫不犹豫地将它列入了我的“必读”书单。
《大话设计模式》这本书给我最大的感受就是“实用性”。它不仅仅是理论的堆砌,而是真正地告诉读者如何在实际的软件开发中运用这些设计模式,让代码变得更健壮、更易于维护和扩展。作者的语言风格非常独特,有时像是在讲故事,有时又像是在和你探讨技术难题,让人在轻松愉快的氛围中学习。我特别喜欢书中关于“重构”的讨论,它强调了设计模式的应用往往伴随着代码的重构,如何识别出需要重构的代码,以及如何一步步地应用设计模式来改善代码结构,这对于提升我的代码质量非常有帮助。书中对于“工厂方法模式”和“抽象工厂模式”的区分讲解,以及它们在实际项目中的应用场景,都让我豁然开朗。我之前常常混淆这两者,但读完这本书,我终于能够清晰地理解它们的区别和各自的优势。而且,书中还提及了一些“设计模式的反模式”,这非常有价值,能够帮助我避免一些常见的错误。这本书让我看到了软件设计的美妙之处,也让我对未来的开发充满了信心。
: TP311.5/2943
醍醐灌顶啊..我太弱了
从容易理解角度不如《Head First 设计模式》,论完整和精深,不如《敏捷软件开发原则、模式和实践》,但是中文书中也算不错,语言比较风趣,总体感觉不如《设计模式之禅》。
立博同学给我的。对于一个自动化专业的人来说,设计模式这门课真新鲜。我以前总说谁工程素养不行,原来我说的就是设计模式。
借天宇老施书一看。。。