《软件设计:Java语言实践》是由机械工业出版社出版的一本关于Java方面的书籍,作者是马丁·P.罗毕拉德,主要介绍了关于软件设计、Java语言方面的知识内容,目前在Java类书籍综合评分为:8.3分。
书籍介绍
《软件设计:Java语言实践》提供了关于软件设计深入的介绍,重点关注面向对象的设计,并使用Java编程语言。目的是通过发掘设计过程中的经验来帮助读者学习软件设计。使用这样一种叙述方式:在上下文中介绍设计知识的每一个元素,并探索不同的解决方案,同时辅以数百个代码片段和设计图。
目录
- 第1章 绪论1
- 1.1 定义软件设计3
- 1.2 软件开发过程中的设计5
- 1.3 获取设计知识6
- 1.4 共享设计技术8
- 1.4.1 设计模式8
- 1.4.2 设计反模式10
- 小结10
- 延伸阅读11
- 第2章 封装12
- 2.1 封装与信息隐藏12
- 2.2 将抽象编码为类型13
- 2.3 作用域与可见性限制16
- 2.4 对象图18
- 2.5 逃逸引用20
- 2.5.1 返回指向内部对象的引用21
- 2.5.2 在内部存储外部引用22
- 2.5.3 通过共享结构泄露引用22
- 2.6 不可变性23
- 2.7 提供内部数据25
- 2.7.1 扩展接口25
- 2.7.2 返回副本26
- 2.7.3 高级机制27
- 2.8 契约式设计27
- 小结30
- 代码探索30
- 延伸阅读32
- 第3章 类型与接口33
- 3.1 行为与实现解耦合33
- 3.2 指定接口的行为36
- 3.3 类图38
- 3.4 函数对象40
- 3.5 迭代器43
- 3.6 ITERATOR设计模式45
- 3.7 STRATEGY设计模式46
- 3.8 接口分离原则47
- 小结50
- 代码探索50
- 延伸阅读52
- 第4章 对象状态53
- 4.1 软件系统的静态和动态视图53
- 4.2 定义对象状态54
- 4.3 状态图55
- 4.4 设计对象生命周期57
- 4.4.1 无效和无用的状态58
- 4.4.2 不必要的状态信息58
- 4.5 可空性59
- 4.5.1 无须对不存在的值建模60
- 4.5.2 对不存在的值建模61
- 4.5.3 可选值类型62
- 4.5.4 NULL OBJECT设计模式63
- 4.6 终极域和变量64
- 4.7 对象身份、相等和唯一66
- 4.8 FLYWEIGHT设计模式68
- 4.9 SINGLETON设计模式71
- 4.10 嵌套类的对象72
- 4.10.1 内部类72
- 4.10.2 匿名类74
- 小结75
- 代码探索76
- 延伸阅读77
- 第5章 单元测试78
- 5.1 单元测试简介78
- 5.2 JUnit单元测试框架基础81
- 5.3 测试代码的组织82
- 5.4 元程序设计83
- 5.4.1 内省84
- 5.4.2 程序的操作86
- 5.4.3 程序元数据87
- 5.5 测试构建88
- 5.6 测试和异常条件91
- 5.7 封装与单元测试93
- 5.8 桩测试95
- 5.9 测试覆盖96
- 5.9.1 语句覆盖98
- 5.9.2 分支覆盖98
- 5.9.3 路径覆盖99
- 小结99
- 代码探索100
- 延伸阅读101
- 第6章 复合102
- 6.1 复合与聚合102
- 6.2 COMPOSITE设计模式105
- 6.3 时序图109
- 6.4 DECORATOR设计模式112
- 6.5 COMPOSITE与DECORATOR的结合116
- 6.6 多态对象复制118
- 6.6.1 声明实现Cloneable接口119
- 6.6.2 重写Object.clone()方法120
- 6.6.3 调用super.clone()120
- 6.6.4 捕获CloneNotSupported-Exception121
- 6.6.5 把clone()加入接口122
- 6.7 PROTOTYPE设计模式123
- 6.8 COMMAND设计模式124
- 6.9 迪米特法则127
- 小结128
- 代码探索129
- 延伸阅读131
- 第7章 继承132
- 7.1 继承的实例132
- 7.2 继承和子类134
- 7.2.1 向下类型转换135
- 7.2.2 单根的类层次结构136
- 7.3 继承域137
- 7.4 继承方法139
- 注解重写方法143
- 7.5 重载方法143
- 7.6 继承与复合145
- 7.7 抽象类147
- 7.8 重温DECORATOR设计模式149
- 7.9 TEMPLATE METHOD设计模式 151
- 7.9.1 终极方法与终极类152
- 7.9.2 抽象方法153
- 7.9.3 模式总结154
- 7.10 正确使用继承155
- 7.10.1 限制基类客户端的行为155
- 7.10.2 不适合作子类型的子类158
- 小结159
- 代码探索159
- 延伸阅读161
- 第8章 控制流反转162
- 8.1 使用控制流反转的动机162
- 8.2 模型–视图–控制器分解164
- 8.3 OBSERVER设计模式165
- 8.3.1 模型和观察者的连接165
- 8.3.2 模型和观察者间的控制流166
- 8.3.3 模型和观察者间的数据流168
- 8.3.4 事件驱动程序设计170
- 8.3.5 小结172
- 8.4 应用OBSERVER设计模式173
- 8.5 图形用户界面开发导论177
- 8.6 图形用户界面组件图178
- 8.6.1 用户体验视角178
- 8.6.2 逻辑视角179
- 8.6.3 源代码视角179
- 8.6.4 运行时视角181
- 8.6.5 定义对象图181
- 8.7 事件处理183
- 8.8 VISITOR设计模式186
- 8.8.1 具体和抽象访问者188
- 8.8.2 在类层次结构中集成操作189
- 8.8.3 遍历对象图191
- 8.8.4 OBSERVER模式中使用继承194
- 8.8.5 在访问者结构中支持数据流196
- 小结197
- 代码探索198
- 延伸阅读200
- 第9章 函数式设计201
- 9.1 一等函数201
- 9.2 函数式接口、lambda表达式和方法引用203
- 9.2.1 函数式接口203
- 9.2.2 lambda表达式204
- 9.2.3 方法引用207
- 9.3 使用函数复合行为208
- 9.4 用函数作数据供给者212
- 供给者函数与OBSERVER模式217
- 9.5 一等函数和设计模式218
- 9.5.1 函数式STRATEGY218
- 9.5.2 函数式COMMAND220
- 9.6 函数式数据处理221
- 9.6.1 数据作为流222
- 9.6.2 将高阶函数应用于流223
- 9.6.3 过滤流224
- 9.6.4 映射数据元素225
- 9.6.5 规约流226
- 小结228
- 代码探索228
- 延伸阅读230
- 附录A Java程序设计语言的重要概念231
- 附录B 代码规范237
- 附录C 应用实例240
- 参考文献242