基本信息
名称: 重构与模式(修订版)
作者信息: 作者: Joshua Kerievsky [ 中文 pdf ]
简单介绍
讲述重构与设计模式两大热门技术,将两者有机结合,极具实战价值,业界专家学习和教授重构与模式亲身经历的结晶,《设计模式》作者Erich Gamma、Ralph Johnson和《重构》作者Martin Fowler联合推荐。
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
| 第1章 本书的写作缘由 1 1.1 过度设计 1 1.2 模式万灵丹 2 1.3 设计不足 2 1.4 测试驱动开发和持续重构 3 1.5 重构与模式 5 1.6 演进式设计 6 第2章 重构 7 2.1 何谓重构 7 2.2 重构的动机 8 2.3 众目睽睽 9 2.4 可读性好的代码 10 2.5 保持清晰 11 2.6 循序渐进 11 2.7 设计欠账 12 2.8 演变出新的架构 13 2.9 复合重构与测试驱动的重构 13 2.10 复合重构的优点 15 2.11 重构工具 15 第3章 模式 17 3.1 何谓模式 17 3.2 模式痴迷 18 3.3 实现模式的方式不止一种 20 3.4 通过重构实现、趋向和去除模式 22 3.5 模式是否会使代码更加复杂 24 3.6 模式知识 25 3.7 使用模式的预先设计 26 第4章 代码坏味 28 4.1 重复代码(DuplicatedCode) 30 4.2 过长函数(LongMethod) 30 4.3 条件逻辑太复杂(ConditionalComplexity) 31 4.4 基本类型偏执(PrimitiveObsession) 32 4.5 不恰当的暴露(IndecentExposure) 32 4.6 解决方案蔓延(SolutionSprawl) 33 4.7 异曲同工的类(AlternativeClasseswithDifferentInterfaces) 33 4.8 冗赘类(LazyClass) 33 4.9 过大的类(LargeClass) 33 4.10 分支语句(SwitchStatement) 34 4.11 组合爆炸(CombinatorialExplosion) 34 4.12 怪异解决方案(OddballSolution) 34 第5章 模式导向的重构目录 36 5.1 重构的格式 36 5.2 本目录中引用的项目 37 5.2.1 XMLBuilder 38 5.2.2 HTMLParser 38 5.2.3 贷款风险计算程序 39 5.3 起点 39 5.4 学习顺序 39 第6章 创建 41 6.1 用CreationMethod替换构造函数 43 6.1.1 动机 43 6.1.2 做法 45 6.1.3 示例 45 6.1.4 变体 49 6.2 将创建知识搬移到Factory 51 6.2.1 动机 51 6.2.2 做法 54 6.2.3 示例 55 6.3 用Factory封装类 60 6.3.1 动机 60 6.3.2 做法 61 6.3.3 示例 62 6.3.4 变体 65 6.4 用FactoryMethod引入多态创建 67 6.4.1 动机 67 6.4.2 做法 68 6.4.3 示例 70 6.5 用Builder封装Composite 74 6.5.1 做法 76 6.5.2 示例 77 6.5.3 变体 87 6.6 内联Singleton 90 6.6.1 动机 90 6.6.2 做法 92 6.6.3 示例 93 第7章 简化 96 7.1 组合方法 97 7.1.1 动机 97 7.1.2 做法 99 7.1.3 示例 99 7.2 用Strategy替换条件逻辑 102 7.2.1 动机 102 7.2.2 做法 104 7.2.3 示例 105 7.3 将装饰功能搬移到Decorator 115 7.3.1 动机 115 7.3.2 做法 118 7.3.3 示例 119 7.4 用State替换状态改变条件语句 133 7.4.1 动机 133 7.4.2 做法 134 7.4.3 示例 135 7.5 用Composite替换隐含树 143 7.5.1 动机 143 7.5.2 做法 146 7.5.3 示例 147 7.6 用Command替换条件调度程序 155 7.6.1 动机 155 7.6.2 做法 157 7.6.3 示例 158 第8章 泛化 164 8.1 形成TemplateMethod 165 8.1.1 动机 166 8.1.2 做法 167 8.1.3 示例 167 8.2 提取Composite 172 8.2.1 动机 172 8.2.2 做法 173 8.2.3 示例 174 8.3 用Composite替换一多之分 180 8.3.1 动机 180 8.3.2 做法 182 8.3.3 示例 183 8.4 用Observer替换硬编码的通知 190 8.4.1 动机 190 8.4.2 做法 191 8.4.3 示例 192 8.5 通过Adapter统一接口 199 8.5.1 动机 199 8.5.2 做法 200 8.5.3 示例 201 8.6 提取Adapter 208 8.6.1 动机 208 8.6.2 做法 210 8.6.3 示例 210 8.6.4 变体 216 8.7 用Interpreter替换隐式语言 217 8.7.1 动机 217 8.7.2 做法 219 8.7.3 示例 220 第9章 保护 230 9.1 用类替换类型代码 231 9.1.1 动机 231 9.1.2 做法 233 9.1.3 示例 234 9.2 用Singleton限制实例化 240 9.2.1 动机 240 9.2.2 做法 241 9.2.3 示例 241 9.3 引入NullObject 244 9.3.1 动机 244 9.3.2 做法 246 9.3.3 示例 247 第10章 聚集操作 252 10.1 将聚集操作搬移到CollectingParameter 253 10.1.1 动机 253 10.1.2 做法 254 10.1.3 示例 255 10.2 将聚集操作搬移到Visitor 259 10.2.1 动机 259 10.2.2 做法 263 10.2.3 示例 267 第11章 实用重构 274 11.1 链构造函数 275 11.1.1 动机 275 11.1.2 做法 276 11.1.3 示例 276 11.2 统一接口 278 11.2.1 动机 278 11.2.2 做法 279 11.2.3 示例 279 11.3 提取参数 280 11.3.1 动机 280 11.3.2 做法 280 11.3.3 示例 281 跋 282 参考文献 283 索引 286
|
亚马逊链接