重构与模式

重构与模式
作者:(美)科瑞夫斯盖 著,杨光,刘基诚 译 出版社:人民邮电出版社出版日期:2006-12-1 ISBN:7115153361 字数:465000 印次:1 版次:1 纸张:胶版纸
内容提要
本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合实战深入理解重构和模式。书中讲述了27种重构方式。
本书适于面向对象软件开发人员阅读,也可作为高校计算机专业、软件工程专业师生的参考读物。
作者简介
Joshua Kerievsky,资深软件设计师,软件开发公司Industrial Logic的创始人,是年轻一代软件开发方面最具人气的专家之一。他曾为许多专业杂志撰稿,并多次在世界级技术会议上担任讲师。除本书外,他还参加撰写了Extreme Pro-gramming Explored和Extreme Programming Perspectives。
目录
第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章代码坏味29
4.1重复代码(Duplicated Code)31
4.2方法过长(Long Method)31
4.3条件逻辑太复杂(Conditional Complexity)32
4.4基本类型迷恋(Primitive Obsession)33
4.5不恰当的暴露(Indecent Exposure)33
4.6解决方案蔓延(Solution Sprawl)34
4.7异曲同工的类(Alternative Classes with Different Interfaces)34
4.8冗赘类(Lazy Class)34
4.9类过大(Large Class)34
4.10分支语句(Switch Statement)35
4.11组合爆炸(Combinatorial Explosion)35
4.12怪异解决方案(Oddball Solution)35
第5章模式导向的重构目录37
5.1重构的格式37
5.2本目录中引用的项目38
5.2.1XML Builder39
5.2.2HTML Parser39
5.2.3贷款风险计算程序40
5.3起点40
5.4学习顺序41
第6章创建43
6.1用Creation Method替换构造函数44
6.1.1动机44
6.1.2做法46
6.1.3示例46
6.1.4变体51
6.2将创建知识搬移到Factory52
6.2.1动机53
6.2.2做法55
6.2.3示例56
6.3用Factory封装类61
6.3.1动机62
6.3.2做法63
6.3.3示例63
6.3.4变体66
6.4用Factory Method引入多态创建68
6.4.1动机68
6.4.2做法69
6.4.3示例71
6.5用Builder封装Composite74
6.5.1做法76
6.5.2示例77
6.5.3变体87
6.6内联Singleton90
6.6.1动机90
6.6.2做法92
6.6.3示例93
第7章简化97
7.1组合方法98
7.1.1动机98
7.1.2做法100
7.1.3示例100
7.2用Strategy替换条件逻辑103
7.2.1动机103
7.2.2做法105
7.2.3示例106
7.3将装饰功能搬移到Decorator115
7.3.1动机115
7.3.2做法119
7.3.3示例120
7.4用State替换状态改变条件语句134
7.4.1动机134
7.4.2做法135
7.4.3示例136
7.5用Composite替换隐含树144
7.5.1动机144
7.5.2做法147
7.5.3示例148
7.6用Command替换条件调度程序155
7.6.1动机156
7.6.2做法157
7.6.3示例158
第8章泛化165
8.1形成Template Method166
8.1.1动机167
8.1.2做法168
8.1.3示例168
8.2提取Composite173
8.2.1动机173
8.2.2做法174
8.2.3示例175
8.3用Composite替换一/多之分181
8.3.1动机181
8.3.2做法183
8.3.3示例184
8.4用Observer替换硬编码的通知191
8.4.1动机191
8.4.2做法192
8.4.3示例193
8.5通过Adapter统一接口200
8.5.1动机200
8.5.2做法201
8.5.3示例202
8.6提取Adapter209
8.6.1动机209
8.6.2做法211
8.6.3示例211
8.6.4变体217
8.7用Interpreter替换隐式语言218
8.7.1动机218
8.7.2做法220
8.7.3示例221
第9章保护231
9.1用类替换类型代码232
9.1.1动机232
9.1.2做法234
9.1.3示例235
9.2用Singleton限制实例化240
9.2.1动机240
9.2.2做法241
9.2.3示例241
9.3引入Null Object243
9.3.1动机244
9.3.2做法245
9.3.3示例246
第10章聚集操作251
10.1将聚集操作搬移到Collecting Parameter252
10.1.1动机252
10.1.2做法253
10.1.3示例254
10.2将聚集操作搬移到Visitor258
10.2.1动机258
10.2.2做法262
10.2.3示例266
第11章实用重构273
11.1链构造函数274
11.1.1动机274
11.1.2做法275
11.1.3示例275
11.2统一接口277
11.2.1动机277
11.2.2做法278
11.2.3示例278
11.3提取参数279
11.3.1动机279
11.3.2做法279
11.3.3示例280
跋281
参考文献283
索引287