《面向对象开发参考手册》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:黄磊编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115333483
  • 页数:261 页
图书介绍:本书浓缩、提炼了这些经典书籍的精华,结合作者自身十几年的软件开发经验和案例,力争将其呈现为一本深入浅出的、涉及软件设计开发各个方面的综合版本,可以缩减读者学习的时间成本,并可以像工具书一样随时翻阅参考。

第1章 转变观念 1

1.1传统的面向对象 1

1.2重新认识对象 4

1.3如何分解对象? 6

1.4如何设计对象? 8

1.5设计对象的接口 9

1.6改进对象的继承 12

1.7设计抽象的系统 13

1.8设计美的系统 13

第2章 经典模式 15

2.1设计模式的基本原则 18

2.2抽象工厂模式(AbstractFactory) 18

2.3抽象服务模式(AbstractServer) 19

2.4无环访问者模式(Acyclic Vi sitor) 20

2.5适配器模式(Adapter) 21

2.6桥接模式(Bridge) 22

2.7生成器模式(Builder) 23

2.8职责链模式(Chain ofResponsibility) 24

2.9命令模式(Command) 25

2.10组合模式(Composite) 26

2.11装饰模式(Decorator) 27

2.12扩展对象模式(ExtensionObject) 28

2.13外观模式(Facade) 29

2.14工厂方法模式(FactoMethod) 29

2.15 享元模式(Flyweight) 30

2.16解释器模式(Interpreter) 31

2.17迭代器模式(Iterator) 32

2.18中介者模式(Mediator) 33

2.19备忘录模式(Memento) 34

2.20空对象模式(Null Object) 35

2.21观察者模式(Observer) 36

2.22原型模式(Prototype) 37

2.23代理模式(Proxy) 38

2.24数量模式(Quantity) 39

2.25范围模式(Range) 40

2.26单件模式(Singleton) 41

2.27规格模式(Specification) 41

2.28状态模式(State) 42

2.29策略模式(Strategy) 43

2.30模板方法模式(TemplateMethod) 44

2.31访问者模式(Visitor) 45

2.32设计模式应用的综合例子 47

第3章 敏捷软件 51

3.1基本原则 52

3.1.1对象设计原则 53

3.1.2包的设计原则 56

3.2敏捷建模 59

3.2.1关于建模的一些认识误区 60

3.2.2敏捷建模的原则和实践 60

3.3按意图编程 61

3.3.1名字:选择语义清晰的名字 62

3.3.2简单:做最简单但又能工作的事情 62

3.3.3假设:做有根据的假设 62

3.3.4注释:“不要注释” 63

3.4软件的度量 63

3.4.1对象的度量 63

3.4.2包的度量 64

3.4.3测试的度量 65

3.5延伸阅读:源代码就是设计 66

第4章 测试驱动 75

4.1什么是TDD 75

4.1.1测试原则:尽早、经常、自动化 76

4.1.2验收测试 78

4.1.3模拟对象 78

4.2测试技巧 79

4.2.1测试之前的思想准备 79

4.2.2测试之间的关系——相互独立的测试 80

4.2.3什么时候写测试 80

4.2.4如何开始写测试——断言优先 80

4.2.5如何选择测试数据——显然数据 81

4.2.6测试如何组织——测试列表 81

4.2.7测试哪些东西 82

4.2.8简单的测试 84

4.2.9易读的测试 84

4.2.10可维护的测试 84

4.2.11可运行的测试 85

4.2.12可调试的测试 86

4.2.13测试的初始化 86

4.2.14使用断言的消息参数 87

4.2.15使用代码覆盖率工具 87

4.2.16测试代码也要不断重构 87

4.3开发工具的测试框架 88

第5章 重构方法 91

5.1软件的味道 92

5.1.1重复代码 93

5.1.2过长方法 94

5.1.3过大类 94

5.1.4过长参数列表 95

5.1.5发散变化 96

5.1.6霰弹式手术 96

5.1.7依恋情结(交往不当) 96

5.1.8数据泥团 97

5.1.9基本类型偏执 97

5.1.10 switch语句 98

5.1.11平行继承体系 99

5.1.12冗赘类 99

5.1.13夸夸其谈的未来性 100

5.1.14令人迷惑的临时字段 100

5.1.15 过度耦合的消息链 101

5.1.16中间转手人 101

5.1.17狎昵关系 102

5.1.18异曲同工的类 102

5.1.19不完善的程序库类 102

5.1.20数据类 103

5.1.21被拒绝的遗赠 103

5.1.22不当注释 104

5.1.23过于复杂的条件逻辑 105

5.1.24不恰当的暴露 105

5.1.25解决方案蔓延 105

5.1.26组合爆炸 106

5.1.27怪异的解决方案 106

5.2如何开始重构 106

5.2.1什么时候重构 106

5.2.2什么时候不能重构 107

5.2.3怎样开始重构——掌握好重构的节奏 107

5.3重构方法索引 108

5.4重新组织方法 111

5.4.1提炼方法 111

5.4.2内联方法 112

5.4.3内联临时变量 112

5.4.4引入解释变量 113

5.4.5移除对参数的赋值 113

5.4.6用方法对象替代方法 114

5.4.7用查询替代临时变量 114

5.4.8分解临时变量 115

5.4.9替换算法 115

5.5在对象间迁移特性 116

5.5.1提炼类 116

5.5.2隐藏委托 116

5.5.3内联类 117

5.5.4引入外加方法 117

5.5.5引入本地扩展 118

5.5.6迁移字段 118

5.5.7迁移方法 119

5.5.8移除中间人 120

5.6重新组织数据 120

5.6.1双向关联改为单向关联 120

5.6.2引用对象改为值对象 121

5.6.3单向关联改为双向关联 122

5.6.4值对象改为引用对象 122

5.6.5复制被观察的数据 123

5.6.6封装集合 123

5.6.7封装字段 124

5.6.8用对象替代数组 124

5.6.9用对象替代数据值 125

5.6.10用符号常数替代魔幻数字 126

5.6.11用数据类替代记录 126

5.6.12用字段替代子类 126

5.6.13用类替代类型码 127

5.6.14用状态/策略模式替代类型码 128

5.6.15用子类替代类型码 128

5.6.16自封装字段 129

5.7简化条件表达式 130

5.7.1合并条件表达式 130

5.7.2合并重复的条件片断 131

5.7.3分解条件式 131

5.7.4引入断言 131

5.7.5引入空对象 132

5.7.6移除控制标志 133

5.7.7用命令模式替代条件调度 133

5.7.8用策略模式替代条件逻辑 134

5.7.9用多态替代条件式 135

5.7.10用卫述语句替代嵌套条件式 135

5.7.11用状态模式替代状态改变条件式 136

5.8简化方法调用 137

5.8.1增加参数 138

5.8.2构造函数链 138

5.8.3组合方法 139

5.8.4封装向下转型 139

5.8.5隐藏方法 140

5.8.6引入参数对象 140

5.8.7把聚集操作迁移到收集参数 141

5.8.8把聚集操作迁移到访问者模式 141

5.8.9把装饰功能迁移到装饰者模式 143

5.8.10参数化方法 144

5.8.11保持对象完整 145

5.8.12移除参数 145

5.8.13移除设置方法 146

5.8.14重命名方法 146

5.8.15 用工厂方法替代构造函数 146

5.8.16用异常替代错误码 147

5.8.17用测试替代异常 147

5.8.18用组合模式替代隐含树 148

5.8.19用明确方法替代参数 149

5.8.20用方法替代参数 149

5.8.21分离查询和修改 150

5.9处理概括关系 151

5.9.1折叠继承体系 151

5.9.2提炼适配器模式 152

5.9.3提炼组合模式 153

5.9.4提炼接口 153

5.9.5提炼子类 154

5.9.6提炼超类 155

5.9.7塑造模板方法模式 155

5.9.8上移构造函数 156

5.9.9上移字段 157

5.9.10上移方法 157

5.9.11下移字段 157

5.9.12下移方法 158

5.9.13用继承替代委托 158

5.9.14用观察者模式替代硬编码通知 159

5.9.15 用解释器模式替代隐式语言 160

5.9.16用委托替代继承 161

5.9.17用组合模式替代一/多之分 162

5.9.18统一接口 163

5.9.19用适配器模式统一接口 163

5.10封装对象的创建 164

5.10.1用工厂封装类 164

5.10.2用生成器模式封装组合模式 165

5.10.3提炼参数 166

5.10.4内联单件模式 166

5.10.5用工厂方法引入多态创建 167

5.10.6用单件模式限制实例化 167

5.10.7把创建知识迁移到工厂 168

5.10.8用创建方法替代构造函数 169

5.11大型重构 169

5.11.1过程化设计转化为对象设计 170

5.11.2提炼继承体系 170

5.11.3分离域和表示层 171

5.11.4梳理分解继承体系 172

第6章 领域模型 173

6.1目标 175

6.1.1消化知识 176

6.1.2交流语言 177

6.1.3模型和代码绑定 178

6.2基本构件 179

6.2.1分离领域 180

6.2.2关联 182

6.2.3实体 183

6.2.4值对象 183

6.2.5服务 184

6.2.6模块(包) 185

6.2.7聚合 186

6.2.8工厂 189

6.2.9仓储 191

6.3深层模型 195

6.4挖掘隐含概念 196

6.4.1概念挖掘 196

6.4.2显式约束 197

6.4.3作为领域对象的流程 198

6.4.4规格模式 199

6.5柔性设计 204

6.5.1释义接口 205

6.5.2无副作用函数 207

6.5.3断言 208

6.5.4概念轮廓 209

6.5.5孤立类 210

6.5.6操作封闭 210

6.5.7声明性设计 211

6.6战略性设计 214

6.7限界上下文 215

6.7.1持续集成 218

6.7.2上下文映射 219

6.7.3共享内核 219

6.7.4客户/供应商开发团队 220

6.7.5同流者 220

6.7.6防腐层 220

6.7.7隔离方式 221

6.7.8开放主机服务 222

6.7.9公布语言 222

6.8模型精炼 222

6.8.1核心领域 223

6.8.2通用子域 224

6.8.3领域愿景声明 225

6.8.4突出核心 225

6.8.5内聚机制 226

6.8.6隔离核心 227

6.8.7抽象核心 227

6.9大比例结构 228

6.9.1渐进顺序 230

6.9.2系统隐喻 230

6.9.3职责层 231

6.9.4知识级别 232

6.9.5插件框架 235

第7章 敏捷过程 237

7.1敏捷宣言 237

7.2敏捷过程的原则 238

7.3典型的敏捷过程 240

7.3.1计划 240

7.3.2测试 241

7.3.3重构 244

7.4敏捷实践 245

7.4.1基本实践 245

7.4.2扩展实践 247

第8章 应用实践 249

8.1培养敏感性 249

8.2统一版本(产品化) 250

8.3从数据模型中心到领域模型中心 251

8.3.1让领域对象封装数据结构 251

8.3.2 O-R映射 252

8.3.3推迟数据库和UI的实现 253

8.4使用通用语言建模 253

8.5分离接口与实现 254

8.6区分职责与功能 254

8.7提炼知识 255

8.8消除基本类型偏执 256

8.9合理划分对象 257

8.10牢记测试先行 257

写在最后 259