《面向对象设计实践指南 Ruby语言描述》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)梅茨著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115332455
  • 页数:208 页
图书介绍:本书与面向对象软件设计有关。它不是一本学术巨著,它讲述的是程序员如何编写代码的故事。它讲授了如何编排软件以便让今天更富有成效,同时也能让下月以及明年继续保持住这种效果。它展示了如何让编写应用程序,让它不只是在当前能获得成功,同时还要适应未来的变化。它能让你在应用程序的整个生命周期里提高生产率,减少成本。

第1章 面向对象设计 1

1.1设计赞歌 2

1.1.1设计解决的问题 2

1.1.2为何难以更改 2

1.1.3实用的设计定义 3

1.2设计工具 4

1.2.1设计原则 4

1.2.2设计模式 5

1.3设计行为 6

1.3.1设计失败 6

1.3.2设计时机 7

1.3.3设计评判 8

1.4面向对象编程简介 10

1.4.1过程式语言 10

1.4.2面向对象语言 11

1.5小结 12

第2章 设计具有单一职责的类 13

2.1决定类的内容 13

2.1.1将方法分组成类 14

2.1.2组织代码以便于更改 14

2.2创建具有单一职责的类 15

2.2.1示例程序:自行车和齿轮 15

2.2.2为何单一职责原则很重要 18

2.2.3确定一个类是否具有单一职责 19

2.2.4确定何时做出设计决策 19

2.3编写拥抱变化的代码 20

2.3.1要依赖行为,不依赖数据 21

2.3.2全面推行单一职责原则 25

2.4最后是真实的轮子需求 28

2.5小结 30

第3章 管理依赖关系 31

3.1理解依赖关系 31

3.1.1认识依赖关系 32

3.1.2对象间的耦合 33

3.1.3其他依赖关系 34

3.2编写松耦合的代码 35

3.2.1注入依赖关系 35

3.2.2隔离依赖关系 37

3.2.3移除参数顺序依赖关系 40

3.3管理依赖方向 45

3.3.1反转依赖关系 45

3.3.2选择依赖方向 47

3.4小结 50

第4章 创建灵活的接口 51

4.1理解接口 51

4.2定义接口 53

4.2.1公共接口 53

4.2.2私有接口 53

4.2.3职责、依赖关系和接口 54

4.3找出公共接口 54

4.3.1示例程序:自行车旅游公司 55

4.3.2构建意图 55

4.3.3使用时序图 56

4.3.4请询问“要什么”,别告知“如何做” 59

4.3.5寻求上下文独立 61

4.3.6信任其他对象 62

4.3.7使用消息来发现对象 63

4.3.8创建基于消息的应用程序 65

4.4编写能展现其(内在)最好面的代码 65

4.4.1创建显式接口 65

4.4.2善用其他类的公共接口 67

4.4.3避免依赖私有接口 67

4.4.4最小化上下文 67

4.5迪米特法则 68

4.5.1定义迪米特法则 68

4.5.2违规的后果 68

4.5.3避免违规 70

4.5.4听从迪米特法则 70

4.6小结 71

第5章 使用鸭子类型技术降低成本 73

5.1理解鸭子类型 73

5.1.1鸭子类型概述 74

5.1.2让问题复杂些 75

5.1.3发现鸭子类型 78

5.1.4鸭子类型的后果 81

5.2编写依赖于鸭子类型的代码 82

5.2.1识别出隐藏的鸭子类型 82

5.2.2信任你的鸭子类型 84

5.2.3记录好鸭子类型 84

5.2.4在鸭子类型之间共享代码 85

5.2.5合理选择鸭子类型 85

5.3克服对鸭子类型的恐惧 86

5.3.1使用静态类型颠覆鸭子类型 86

5.3.2静态类型与动态类型 87

5.3.3拥抱动态类型 88

5.4小结 89

第6章 通过继承获得行为 91

6.1理解经典的继承 91

6.2弄清使用继承的地方 92

6.2.1从一个具体类开始 92

6.2.2嵌入多种类型 94

6.2.3找出嵌入的类型 96

6.2.4选择继承 96

6.2.5描绘出继承关系 98

6.3误用继承 98

6.4找出抽象 100

6.4.1创建抽象父类 100

6.4.2提升抽象行为 103

6.4.3从具体分离出抽象 105

6.4.4使用模板方法模式 107

6.4.5实现所有模板方法 109

6.5管理父类与子类之间的耦合 110

6.5.1理解耦合 111

6.5.2使用钩子消息解耦子类 115

6.6小结 119

第7章 使用模块共享角色行为 121

7.1理解角色 121

7.1.1找出角色 122

7.1.2组织职责 123

7.1.3删除不必要的依赖关系 125

7.1.4编写具体代码 126

7.1.5提取抽象 129

7.1.6查找方法 132

7.1.7继承角色行为 135

7.2编写可继承的代码 136

7.2.1识别出反模式 136

7.2.2坚持抽象 136

7.2.3重视契约 137

7.2.4使用模板方法模式 138

7.2.5预先将类解耦 138

7.2.6创建浅层结构 138

7.3小结 139

第8章 组合对象 141

8.1 Parts组合成Bicycle 141

8.1.1更新Bicycle类 141

8.1.2创建Parts层次结构 143

8.2组合成Parts对象 145

8.2.1创建Part 146

8.2.2让Parts对象更像一个数组 149

8.3制造Parts 152

8.3.1创建PartsFactory 153

8.3.2借助PartsFactory 154

8.4组合成Bicycle 155

8.5继承和组合的抉择 159

8.5.1接受继承带来的后果 159

8.5.2接受组合带来的后果 161

8.5.3选择关系 162

8.6小结 164

第9章 设计最划算的测试 165

9.1意图测试 166

9.1.1了解测试的意图 166

9.1.2了解测试的内容 168

9.1.3了解测试的时机 170

9.1.4了解测试的方法 171

9.2测试输入消息 173

9.2.1删除未使用的接口 174

9.2.2证明公共接口 175

9.2.3隔离测试对象 176

9.2.4注入使用类的依赖关系 178

9.2.5将依赖关系注入成角色 180

9.3测试私有方法 184

9.3.1在测试过程中忽略私有方法 184

9.3.2从测试类里移除私有方法 185

9.3.3选择测试私有方法 185

9.4测试输出消息 186

9.4.1忽略查询消息 186

9.4.2证明命令消息 187

9.5测试鸭子类型 189

9.5.1测试角色 189

9.5.2用角色测试验证测试替身 194

9.6测试继承代码 198

9.6.1指定继承接口 198

9.6.2指定子类责任 201

9.6.3测试独特行为 204

9.7小结 207

后记 208