王朝百科
分享
 
 
 

重构与模式

王朝百科·作者佚名  2010-01-18  
宽屏版  字体: |||超大  

重构与模式

重构与模式

作者:(美)科瑞夫斯盖 著,杨光,刘基诚 译 出版社:人民邮电出版社出版日期: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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有