大话设计模式

大话设计模式

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
8.31851 评价豆瓣读书
免费试读
特惠满减专区满500减250、满200减100、满100减50活动详情

作品简介

本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GoF(设计模式的经典名著——Design Patterns: Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者Erich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF)总结的23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式的全面总结。附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。本书的特色是通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解——为什么这样设计才是好的?是怎样想到这样设计的?以达到不但授之以“鱼”,还授之以“渔”的目的。引导读者体会设计演变过程中蕴藏的大智慧。

程杰:高级软件工程师 & 高级培训讲师。从事软件开发一线工作近八年时间。曾在申银万国证券公司、上海杨浦区政府、朝华集团下属网游公司、香港晨兴集团等多行业项目开发中担任主程及项目负责人,有丰富的大中型软件开发经验,以及多年的软件设计与项目管理经验。曾任加拿大慧桥培训中心金牌讲师,主持.NET高级软件工程师的培训工作;早年从事高中数学教学工作,曾在江苏常州重点高中任教时获得过市教学一等奖,这些教学和培训经历让作者对如何以易懂的语言讲解艰深的技术知识有了深刻的理解。

作品目录

  1. 内容简介
  2. 本书出版后的读者评论
  3. 前言
  4. 第1章 代码无错就是优?——简单工厂模式
  5. 1.1 面试受挫
  6. 1.2 初学者代码毛病
  7. 1.3 代码规范
  8. 1.4 面向对象编程
  9. 1.5 活字印刷,面向对象
  10. 1.6 面向对象的好处
  11. 1.7 复制vs.复用
  12. 1.8 业务的封装
  13. 1.9 紧耦合vs.松耦合
  14. 1.10 简单工厂模式
  15. 1.11 UML类图
  16. 第2章 商场促销——策略模式
  17. 2.1 商场收银软件
  18. 2.2 增加打折
  19. 2.3 简单工厂实现
  20. 2.4 策略模式
  21. 2.5 策略模式实现
  22. 2.6 策略与简单工厂结合
  23. 2.7 策略模式解析
  24. 第3章 拍摄UFO——单一职责原则
  25. 3.1 新手机
  26. 3.2 拍摄
  27. 3.3 没用的东西
  28. 3.4 单一职责原则
  29. 3.5 方块游戏的设计
  30. 3.6 手机职责过多吗?
  31. 第4章 考研求职两不误——开放-封闭原则
  32. 4.1 考研失败
  33. 4.2 开放-封闭原则
  34. 4.3 何时应对变化
  35. 4.4 两手准备,并全力以赴
  36. 第5章 会修电脑不会修收音机?——依赖倒转原则
  37. 5.1 MM请求修电脑
  38. 5.2 电话遥控修电脑
  39. 5.3 依赖倒转原则
  40. 5.4 里氏代换原则
  41. 5.5 修收音机
  42. 第6章 穿什么有这么重要?——装饰模式
  43. 6.1 穿什么有这么重要?
  44. 6.2 小菜扮靓第一版
  45. 6.3 小菜扮靓第二版
  46. 6.4 装饰模式
  47. 6.5 小菜扮靓第三版
  48. 6.6 装饰模式总结
  49. 第7章 为别人做嫁衣——代理模式
  50. 7.1 为别人做嫁衣!
  51. 7.2 没有代理的代码
  52. 7.3 只有代理的代码
  53. 7.4 符合实际的代码
  54. 7.5 代理模式
  55. 7.6 代理模式应用
  56. 7.7 秀才让小六代其求婚
  57. 第8章 雷锋依然在人间——工厂方法模式
  58. 8.1 再现活雷锋
  59. 8.2 简单工厂模式实现
  60. 8.3 工厂方法模式实现
  61. 8.4 简单工厂vs.工厂方法
  62. 8.5 雷锋工厂
  63. 第9章 简历复印——原型模式
  64. 9.1 夸张的简历
  65. 9.2 简历代码初步实现
  66. 9.3 原型模式
  67. 9.4 简历的原型实现
  68. 9.5 浅复制与深复制
  69. 9.6 简历的深复制实现
  70. 9.7 复制简历vs.手写求职信
  71. 第10章 考题抄错会做也白搭——模板方法模式
  72. 10.1 选择题不会做,蒙呗!
  73. 10.2 重复=易错+难改
  74. 10.3 提炼代码
  75. 10.4 模板方法模式
  76. 10.5 模板方法模式特点
  77. 10.6 主观题,看你怎么蒙
  78. 第11章 无熟人难办事?——迪米特法则
  79. 11.1 第一天上班
  80. 11.2 无熟人难办事
  81. 11.3 迪米特法则
  82. 第12章 牛市股票还会亏钱?——外观模式
  83. 12.1 牛市股票还会亏钱?
  84. 12.2 股民炒股代码
  85. 12.3 投资基金代码
  86. 12.4 外观模式
  87. 12.5 何时使用外观模式
  88. 第13章 好菜每回味不同——建造者模式
  89. 13.1 炒面没放盐
  90. 13.2 建造小人一
  91. 13.3 建造小人二
  92. 13.4 建造者模式
  93. 13.5 建造者模式解析
  94. 13.6 建造者模式基本代码
  95. 第14章 老板回来,我不知道——观察者模式
  96. 14.1 老板回来?我不知道!
  97. 14.2 双向耦合的代码
  98. 14.3 解耦实践一
  99. 14.4 解耦实践二
  100. 14.5 观察者模式
  101. 14.6 观察者模式特点
  102. 14.7 观察者模式的不足
  103. 14.8 事件委托实现
  104. 14.9 事件委托说明
  105. 14.10 石守吉失手机后的委托
  106. 第15章 就不能不换DB吗?——抽象工厂模式
  107. 15.1 就不能不换DB吗?
  108. 15.2 最基本的数据访问程序
  109. 15.3 用了工厂方法模式的数据访问程序
  110. 15.4 用了抽象工厂模式的数据访问程序
  111. 15.5 抽象工厂模式
  112. 15.6 抽象工厂模式的优点与缺点
  113. 15.7 用简单工厂来改进抽象工厂
  114. 15.8 用反射+抽象工厂的数据访问程序
  115. 15.9 用反射+配置文件实现数据访问程序
  116. 15.10 无痴迷,不成功
  117. 第16章 无尽加班何时休——状态模式
  118. 16.1 加班,又是加班!
  119. 16.2 工作状态-函数版
  120. 16.3 工作状态-分类版
  121. 16.4 方法过长是坏味道
  122. 16.5 状态模式
  123. 16.6 状态模式好处与用处
  124. 16.7 工作状态-状态模式版
  125. 第17章 在NBA我需要翻译——适配器模式
  126. 17.1 在NBA我需要翻译!
  127. 17.2 适配器模式
  128. 17.3 何时使用适配器模式
  129. 17.4 篮球翻译适配器
  130. 17.5 适配器模式的.NET应用
  131. 17.6 扁鹊的医术
  132. 第18章 如果再回到从前——备忘录模式
  133. 18.1 如果再给我一次机会……
  134. 18.2 游戏存进度
  135. 18.3 备忘录模式
  136. 18.4 备忘录模式基本代码
  137. 18.5 游戏进度备忘
  138. 第19章 分公司=一部门——组合模式
  139. 19.1 分公司不就是一部门吗?
  140. 19.2 组合模式
  141. 19.3 透明方式与安全方式
  142. 19.4 何时使用组合模式
  143. 19.5 公司管理系统
  144. 19.6 组合模式好处
  145. 第20章 想走?可以!先买票——迭代器模式
  146. 20.1 乘车买票,不管你是谁!
  147. 20.2 迭代器模式
  148. 20.3 迭代器实现
  149. 20.4 .NET的迭代器实现
  150. 20.5 迭代高手
  151. 第21章 有些类也需计划生育——单例模式
  152. 21.1 类也需要计划生育
  153. 21.2 判断对象是否是null
  154. 21.3 生还是不生是自己的责任
  155. 21.4 单例模式
  156. 21.5 多线程时的单例
  157. 21.6 双重锁定
  158. 21.7 静态初始化
  159. 第22章 手机软件何时统一——桥接模式
  160. 22.1 凭什么你的游戏我不能玩
  161. 22.2 紧耦合的程序演化
  162. 22.3 合成/聚合复用原则
  163. 22.4 松耦合的程序
  164. 22.5 桥接模式
  165. 22.6 桥接模式基本代码
  166. 22.7 我要开发“好”游戏
  167. 第23章 烤羊肉串引来的思考——命令模式
  168. 23.1 吃烤羊肉串!
  169. 23.2 烧烤摊vs.烧烤店
  170. 23.3 紧耦合设计
  171. 23.4 松耦合设计
  172. 23.5 松耦合后
  173. 23.6 命令模式
  174. 23.7 命令模式作用
  175. 第24章 加薪非要老总批?——职责链模式
  176. 24.1 老板,我要加薪!
  177. 24.2 加薪代码初步
  178. 24.3 职责链模式
  179. 24.4 职责链的好处
  180. 24.5 加薪代码重构
  181. 24.6 加薪成功
  182. 第25章 世界需要和平——中介者模式
  183. 25.1 世界需要和平!
  184. 25.2 中介者模式
  185. 25.3 安理会做中介
  186. 25.4 中介者模式优缺点
  187. 第26章 项目多也别傻做——享元模式
  188. 26.1 项目多也别傻做!
  189. 26.2 享元模式
  190. 26.3 网站共享代码
  191. 26.4 内部状态与外部状态
  192. 26.5 享元模式应用
  193. 第27章 其实你不懂老板的心——解释器模式
  194. 27.1 其实你不懂老板的心
  195. 27.2 解释器模式
  196. 27.3 解释器模式好处
  197. 27.4 音乐解释器
  198. 27.5 音乐解释器实现
  199. 27.6 料事如神
  200. 第28章 男人和女人——访问者模式
  201. 28.1 男人和女人!
  202. 28.2 最简单的编程实现
  203. 28.3 简单的面向对象实现
  204. 28.4 用了模式的实现
  205. 28.5 访问者模式
  206. 28.6 访问者模式基本代码
  207. 28.7 比上不足,比下有余
  208. 第29章 OOTV杯超级模式大赛——模式总结
  209. 29.1 演讲任务
  210. 29.2 报名参赛
  211. 29.3 超模大赛开幕式
  212. 29.4 创建型模式比赛
  213. 29.5 结构型模式比赛
  214. 29.6 行为型模式一组比赛
  215. 29.7 行为型模式二组比赛
  216. 29.8 决赛
  217. 29.9 梦醒时分
  218. 29.10 没有结束的结尾
  219. 附录A 培训实习生——面向对象基础
  220. A.1 培训实习生
  221. A.2 类与实例
  222. A.3 构造方法
  223. A.4 方法重载
  224. A.5 属性与修饰符
  225. A.6 封装
  226. A.7 继承
  227. A.8 多态
  228. A.9 重构
  229. A.10 抽象类
  230. A.11 接口
  231. A.12 集合
  232. A.13 泛型
  233. A.14 委托与事件
  234. A.15 客套
  235. 附录B 参考文献
载入中

热门划线

  1. 聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分8 人
  2. 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类8 人
  3. 合成(Composition,也有翻译成‘组合’的)是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样6 人
  4. 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离[ASD]。其实要去判断是否应该分离出类来,也不难,那就是如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责[ASD],就应该考虑类的职责分离。”5 人
  5. 精彩的代码是如何想出来的,要比看到精彩的代码更加令人期待。4 人
  6. 通过封装、继承、多态把程序的耦合度降低4 人
  7. 类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。”4 人
  8. 。策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。看来商场收银系统应该考虑用策略模式?”4 人
  9. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏[ASD]。事实上,你完全可以找出哪些是界面,哪些是游戏逻辑,然后进行分离。”4 人
  10. 开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要[ASD]4 人

喜欢这本书的人也喜欢