重构与模式

   《设计模式》和《重构》之后又一里程碑式著作,凝聚众多业界专家经验与领悟,帮你打通重构与模式任督二脉。
  1994年,《设计模式》为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。 
  1999年,《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式。 
  现在,在众所期盼之中,Joshua Kerievsky的《重构与模式》第一次深入和全面地论述了设计模式的运用与演进式的重构过程,并揭示了两者之间至关重要的联系,又一次革命性地改变了我们的设计方式。 重构与模式,本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系。

  1. 本书的写作缘由 1
    1. 1.1 过度设计 1
    2. 1.2 模式万灵丹 2
    3. 1.3 设计不足 2
    4. 1.4 测试驱动开发和持续重构 3
    5. 1.5 重构与模式 5
    6. 1.6 演进式设计 6
  2. 重构 7
    1. 2.1 何谓重构 7
    2. 2.2 重构的动机 8
    3. 2.3 众目睽睽 9
    4. 2.4 可读性好的代码 10
    5. 2.5 保持清晰 11
    6. 2.6 循序渐进 11
    7. 2.7 设计欠账 12
    8. 2.8 演变出新的架构 13
    9. 2.9 复合重构与测试驱动的重构 13
    10. 2.10 复合重构的优点 15
    11. 2.11 重构工具 15
  3. 模式 17
    1. 3.1 何谓模式 17
    2. 3.2 模式痴迷 18
    3. 3.3 实现模式的方式不止一种 20
    4. 3.4 通过重构实现、趋向和去除模式 22
    5. 3.5 模式是否会使代码更加复杂 24
    6. 3.6 模式知识 25
    7. 3.7 使用模式的预先设计 26
  4. 代码坏味 29
    1. 4.1 重复代码(Duplicated Code) 31
    2. 4.2 方法过长(Long Method) 31
    3. 4.3 条件逻辑太复杂(Conditional Complexity) 32
    4. 4.4 基本类型迷恋(Primitive Obsession) 33
    5. 4.5 不恰当的暴露(Indecent Exposure) 33
    6. 4.6 解决方案蔓延(Solution Sprawl) 34
    7. 4.7 异曲同工的类(Alternative Classes with Different Interfaces) 34
    8. 4.8 冗赘类(Lazy Class) 34
    9. 4.9 类过大(Large Class) 34
    10. 4.10 分支语句(Switch Statement) 35
    11. 4.11 组合爆炸(Combinatorial Explosion) 35
    12. 4.12 怪异解决方案(Oddball Solution) 35
  5. 模式导向的重构目录 37
    1. 5.1 重构的格式 37
    2. 5.2 本目录中引用的项目 38
    3. 5.2.1 XML Builder 39
    4. 5.2.2 HTML Parser 39
    5. 5.2.3 贷款风险计算程序 40
    6. 5.3 起点 40
    7. 5.4 学习顺序 41
  6. 创建 43
    1. 6.1 用Creation Method替换构造函数 44
    2. 6.1.1 动机 44
    3. 6.1.2 做法 46
    4. 6.1.3 示例 46
    5. 6.1.4 变体 51
    6. 6.2 将创建知识搬移到Factory 52
    7. 6.2.1 动机 53
    8. 6.2.2 做法 55
    9. 6.2.3 示例 56
    10. 6.3 用Factory封装类 61
    11. 6.3.1 动机 62
    12. 6.3.2 做法 63
    13. 6.3.3 示例 63
    14. 6.3.4 变体 66
    15. 6.4 用Factory Method引入多态创建 68
    16. 6.4.1 动机 68
    17. 6.4.2 做法 69
    18. 6.4.3 示例 71
    19. 6.5 用Builder封装Composite 74
    20. 6.5.1 做法 76
    21. 6.5.2 示例 77
    22. 6.5.3 变体 87
    23. 6.6 内联Singleton 90
    24. 6.6.1 动机 90
    25. 6.6.2 做法 92
    26. 6.6.3 示例 93
  7. 简化 97
    1. 7.1 组合方法 98
    2. 7.1.1 动机 98
    3. 7.1.2 做法 100
    4. 7.1.3 示例 100
    5. 7.2 用Strategy替换条件逻辑 103
    6. 7.2.1 动机 103
    7. 7.2.2 做法 105
    8. 7.2.3 示例 106
    9. 7.3 将装饰功能搬移到Decorator 115
    10. 7.3.1 动机 115
    11. 7.3.2 做法 119
    12. 7.3.3 示例 120
    13. 7.4 用State替换状态改变条件语句 134
    14. 7.4.1 动机 134
    15. 7.4.2 做法 135
    16. 7.4.3 示例 136
    17. 7.5 用Composite替换隐含树 144
    18. 7.5.1 动机 144
    19. 7.5.2 做法 147
    20. 7.5.3 示例 148
    21. 7.6 用Command替换条件调度程序 155
    22. 7.6.1 动机 156
    23. 7.6.2 做法 157
    24. 7.6.3 示例 158
  8. 泛化 165
    1. 8.1 形成Template Method 166
    2. 8.1.1 动机 167
    3. 8.1.2 做法 168
    4. 8.1.3 示例 168
    5. 8.2 提取Composite 173
    6. 8.2.1 动机 173
    7. 8.2.2 做法 174
    8. 8.2.3 示例 175
    9. 8.3 用Composite替换一/多之分 181
    10. 8.3.1 动机 181
    11. 8.3.2 做法 183
    12. 8.3.3 示例 184
    13. 8.4 用Observer替换硬编码的通知 191
    14. 8.4.1 动机 191
    15. 8.4.2 做法 192
    16. 8.4.3 示例 193
    17. 8.5 通过Adapter统一接口 200
    18. 8.5.1 动机 200
    19. 8.5.2 做法 201
    20. 8.5.3 示例 202
    21. 8.6 提取Adapter 209
    22. 8.6.1 动机 209
    23. 8.6.2 做法 211
    24. 8.6.3 示例 211
    25. 8.6.4 变体 217
    26. 8.7 用Interpreter替换隐式语言 218
    27. 8.7.1 动机 218
    28. 8.7.2 做法 220
    29. 8.7.3 示例 221
  9. 保护 231
    1. 9.1 用类替换类型代码 232
    2. 9.1.1 动机 232
    3. 9.1.2 做法 234
    4. 9.1.3 示例 235
    5. 9.2 用Singleton限制实例化 240
    6. 9.2.1 动机 240
    7. 9.2.2 做法 241
    8. 9.2.3 示例 241
    9. 9.3 引入Null Object 243
    10. 9.3.1 动机 244
    11. 9.3.2 做法 245
    12. 9.3.3 示例 246
  10. 聚集操作 251
    1. 10.1 将聚集操作搬移到Collecting Parameter 252
    2. 10.1.1 动机 252
    3. 10.1.2 做法 253
    4. 10.1.3 示例 254
    5. 10.2 将聚集操作搬移到Visitor 258
    6. 10.2.1 动机 258
    7. 10.2.2 做法 262
    8. 10.2.3 示例 266
  11. 实用重构 273
    1. 11.1 链构造函数 274
    2. 11.1.1 动机 274
    3. 11.1.2 做法 275
    4. 11.1.3 示例 275
    5. 11.2 统一接口 277
    6. 11.2.1 动机 277
    7. 11.2.2 做法 278
    8. 11.2.3 示例 278
    9. 11.3 提取参数 279
    10. 11.3.1 动机 279
    11. 11.3.2 做法 279
    12. 11.3.3 示例 280
  12. 跋 281
  13. 参考文献 283
  14. 索引 287
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值