注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计JAVA及其相关从零学Java设计模式

从零学Java设计模式

从零学Java设计模式

定 价:¥89.00

作 者: [美]米罗斯拉夫·威格纳
出版社: 机械工业出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787111759782 出版时间: 2024-09-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  本书以实用的设计模式为例,讲解了Java近年来在改善语法方面取得的进展,同时在实现这些模式的过程中展示了语言特性、设计模式与平台效率之间的关系。本书涵盖23种传统的设计模式、11种较为常见的模式,以及8种适用于多线程环境的并发模式。另外,本书还简要介绍了15种反模式。作者讲解这些模式的时候不仅给出了简洁、直观的范例代码,而且还利用UML类图与JFR工具展示了运用该模式的程序所具备的架构及运行细节,让读者能够更全面地了解模式对代码结构的影响,以及模式与Java虚拟机的交互情况。本书的特点在于把Java这种成熟的编程语言以及该语言最近新增的特性与各种设计模式结合起来,告诉读者怎样充分发挥Java的特性与优势,从而更好地实现设计模式,避免陷入空谈概念而无法落实的境地。

作者简介

  米罗斯拉夫·威格纳(Miroslav Wengner)是一位热衷于弹性分布式系统与产品质量的软件工程师。他参与了Robo4J项目(一个针对机器人及物联网的响应式软实时框架),还为OpenJDK做出了贡献,并参与了其他开源技术项目。他致力于构建弹性、可扩展的解决方案。他入选了Java Champions Program,被评为JavaOne Rockstar,也是JCP的执行委员会委员。他目前在OpenValue公司担任首席软件工程师,工作之余,他还在JavaOne、Devoxx等技术会议和博客上分享自己的心得。他很看好Java生态系统,并帮助它变得更好。

图书目录

译者序

前 言
审校者简介
第一部分 设计模式与Java平台的功能
第1章 软件设计模式入门 3
1.1 技术准备 3
1.2 编程:从符号到程序 3
1.3 OOP与APIE 5
1.3.1 封装—只公布那些必须公布的信息 6
1.3.2 继承—在应该创造新类的时候创造 6
1.3.3 多态—根据需要表现出不同的行为 7
1.3.4 抽象—从细节中提取一套标准功能 9
1.3.5 把抽象、多态、继承、封装这四个概念贯穿起来 11
1.4 SOLID设计原则 12
1.4.1 单一功能原则—每个类只负责一件事 13
1.4.2 开闭原则 13
1.4.3 里氏替换原则—子类必须能够当作超类来使用 14
1.4.4 接口隔离原则 15
1.4.5 依赖反转原则 17
1.5 设计模式为何如此重要 18
1.6 设计模式能够解决哪些问题 18
1.7 小结 20
1.8 习题 21
1.9 参考资料 21
第2章 Java平台 22
2.1 技术准备 22
2.2 Java是如何诞生的 22
2.3 Java平台的模型与功能 23
2.3.1 JDK 24
2.3.2 JRE 25
2.3.3 JVM 25
2.4 垃圾收集机制与Java内存模型 30
2.4.1 JMM 30
2.4.2 GC与自动内存管理 32
2.5 Java的核心API 35
2.5.1 原始类型与包装器类型 36
2.5.2 与String有关的API 37
2.5.3 数组 39
2.5.4 Java集合框架 40
2.5.5 Math API 42
2.6 函数式编程与Java 43
2.6.1 lambda与函数接口 43
2.6.2 用匿名类与lambda表达式充当函数接口并在Stream API中使用 44
2.7 Java的模块系统 45
2.8 Java语言在第11~17版之间添加的特性 48
2.8.1 允许使用var关键字声明lambda表达式的参数(Java SE 11,JEP-323) 48
2.8.2 switch表达式(Java SE 14,JEP-361) 49
2.8.3 文本块(Java SE 15,JEP-378) 49
2.8.4 instanceof运算符的模式匹配功能(Java SE 16,JEP-394) 50
2.8.5 record(Java SE 16,JEP-395) 50
2.8.6 sealed类(Java SE 17,JEP-409) 50
2.8.7 Java API采用UTF-8作为默认字符集(Java SE 18,JEP-400) 51
2.8.8 带有模式匹配功能的switch(Java SE 18,Second Preview,JEP-420) 52
2.9 Java的并发 52
2.9.1 从线程到执行器 52
2.9.2 执行任务的两种方式 54
2.10 小结 55
2.11 习题 56
2.12 参考资料 56
第二部分 用Java语言实现标准的设计模式
第3章 创建型设计模式 61
3.1 技术准备 61
3.2 从类怎么变成对象说起 61
3.3 工厂方法模式—根据输入的数据创建对象 63
3.3.1 动机 63
3.3.2 该模式在JDK中的运用 63
3.3.3 范例代码 64
3.3.4 模式小结 66
3.4 抽象工厂模式—用适当的工厂方法创建某个系列的产品 66
3.4.1 动机 67
3.4.2 该模式在JDK中的运用 67
3.4.3 范例代码 67
3.4.4 模式小结 69
3.5 建造者模式—实例化复杂的对象 70
3.5.1 动机 70
3.5.2 该模式在JDK中的运用 70
3.5.3 范例代码 71
3.5.4 模式小结 72
3.6 原型模式—克隆对象 73
3.6.1 动机 73
3.6.2 该模式在JDK中的运用 73
3.6.3 范例代码 74
3.6.4 模式小结 76
3.7 单例模式—确保某个类只存在一个实例 77
3.7.1 动机 77
3.7.2 该模式在JDK中的运用 77
3.7.3 范例代码 77
3.7.4 模式小结 79
3.8 对象池模式—提高性能 80
3.8.1 动机 80
3.8.2 该模式在JDK中的运用 80
3.8.3 范例代码 80
3.8.4 模式小结 82
3.9 惰性初始化模式—按需初始化对象 83
3.9.1 动机 83
3.9.2 该模式在JDK中的运用 83
3.9.3 范例代码 84
3.9.4 模式小结 86
3.10 依赖注入模式—减少类之间的依赖关系 86
3.10.1 动机 86
3.10.2 该模式在JDK中的运用 87
3.10.3 范例代码 87
3.10.4 模式小结 90
3.11 小结 91
3.12 习题 92
3.13 参考资料 92
第4章 结构型设计模式 93
4.1 技术准备 93
4.2 适配器模式—让不兼容的对象变得兼容 93
4.2.1 动机 93
4.2.2 该模式在JDK中的运用 94
4.2.3 范例代码 94
4.2.4 模式小结 97
4.3 桥接模式—独立地解耦对象和开发对象 97
4.3.1 动机 97
4.3.2 该模式在JDK中的运用 97
4.3.3 范例代码 98
4.3.4 模式小结 100
4.4 组合模式—用相同的方式处理不同的对象 100
4.4.1 动机 100
4.4.2 该模式在JDK中的运用 100
4.4.3 范例代码 101
4.4.4 模式小结 102
4.5 修饰器模式—扩展对象的功能 102
4.5.1 动机 102
4.5.2 该模式在JDK中的运用 103
4.5.3 范例代码 103
4.5.4 模式小结 105
4.6 外观模式—简化程序与某一群对象之间的通信逻辑 105
4.6.1 动机 105
4.6.2 该模式在JDK中的运用 105
4.6.3 范例代码 106
4.6.4 模式小结 107
4.7 过滤器模式—根据条件选出需要的对象 107
4.7.1 动机 107
4.7.2 该模式在JDK中的运用 107
4.7.3 范例代码 107
4.7.4 模式小结 110
4.8 享元模式—跨应用程序共享对象  110
4.8.1 动机  110
4.8.2 该模式在JDK中的运用  110
4.8.3 范例代码  110
4.8.4 模式小结  112
4.9 前端控制器模式—统一处理请求  112
4.9.1 动机  112
4.9.2 该模式在JDK中的运用  113
4.9.3 范例代码  113
4.9.4 模式小结  115
4.10 标记模式—识别实例  115
4.10.1 动机  115
4.10.2 该模式在JDK中的运用  115
4.10.3 范例代码  116
4.10.4 模式小结  118
4.11 模块模式—利用模块的概念来管理各个组件  118
4.11.1 动机  118
4.11.2 该模式在JDK中的运用  118
4.11.3 范例代码  118
4.11.4 模式小结  120
4.12 代理模式—为对象提供占位符  120
4.12.1 动机  120
4.12.2 该模式在JDK中的运用  121
4.12.3 范例代码  121
4.12.4 模式小结  122
4.13 孪生模式—在Java语言中实现多重继承  122
4.13.1 动机  122
4.13.2 范例代码  123
4.13.3 模式小结  124
4.14 小结  124
4.15 习题  125
4.16 参考资料  125
第5章 行为型设计模式  126
5.1 技术准备  126
5.2 缓存模式—降低程序开销  126
5.2.1 动机  127
5.2.2 该模式在JDK中的运用  127
5.2.3 范例代码  127
5.2.4 模式小结  129
5.3 责任链模式—清晰而灵活地处理事件  129
5.3.1 动机  129
5.3.2 该模式在JDK中的运用  130
5.3.3 范例代码  130
5.3.4 模式小结  131
5.4 命令模式—把信息转化成相应的动作  132
5.4.1 动机  132
5.4.2 该模式在JDK中的运用  132
5.4.3 范例代码  132
5.4.4 模式小结  133
5.5 解释器模式—赋予上下文意义  134
5.5.1 动机  134
5.5.2 该模式在JDK中的运用  134
5.5.3 范例代码  134
5.5.4 模式小结  136
5.6 迭代器模式—检查所有元素  136
5.6.1 动机  136
5.6.2 该模式在JDK中的运用  136
5.6.3 范例代码  136
5.6.4 模式小结  138
5.7 中介者模式—让对象之间更好地交换信息  138
5.7.1 动机  138
5.7.2 该模式在JDK中的运用  139
5.7.3 范例代码  139
5.7.4 模式小结  140
5.8 备忘录模式—把对象恢复到应有的状态  140
5.8.1 动机  140
5.8.2 该模式在JDK中的运用  140
5.8.3 范例代码  140
5.8.4 模式小结  142
5.9 空对象模式—避免空指针异常  143
5.9.1 动机  143
5.9.2 该模式在JDK中的运用  143
5.9.3 范例代码  143
5.9.4 模式小结  144
5.10 观察者模式—让相关各方都得到通知  145
5.10.1 动机  145
5.10.2 该模式在JDK中的运用  145
5.10.3 范例代码  145
5.10.4 模式小结  146
5.11 管道模式—处理实例阶段  146
5.11.1 动机  147
5.11.2 该模式在JDK中的运用  147
5.11.3 范例代码  147
5.11.4 模式小结  148
5.12 状态模式—变更对象的内部行为  149
5.12.1 动机  149
5.12.2 该模式在JDK中的运用  149
5.12.3 范例代码  149
5.12.4 模式小结  150
5.13 策略模式—切换对象的行为  150
5.13.1 动机  151
5.13.2 该模式在JDK中的运用  151
5.13.3 范例代码  151
5.13.4 模式小结  152
5.14 模板模式—制定标准的处理流程  153
5.14.1 动机  153
5.14.2 该模式在JDK中的运用  153
5.14.3 范例代码  153
5.14.4 模式小结  155
5.15 访问者模式—根据对象的类型执行代码  155
5.15.1 动机  155
5.15.2 该模式在JDK中的运用  155
5.15.3 范例代码  155
5.15.4 模式小结  157
5.16 小结  158
5.17 习题  158
5.18 参考资料  159
第三部分 其他重要的模式与反模式
第6章 并发设计模式  163
6.1 技术准备  163
6.2 主动对象模式—解耦方法的执行时机与触发时机  164
6.2.1 动机  164
6.2.2 范例代码  164
6.2.3 模式小结  167
6.3 异步方法调用模式—让任务以非阻塞的方式执行  167
6.3.1 动机  167
6.3.2 范例代码  167
6.3.3 模式小结  169
6.4 阻行模式—延迟执行,直到前一个任务完成  170
6.4.1 动机  171
6.4.2 范例代码  171
6.4.3 模式小结  173
6.5 双重检查锁模式—提供唯一的对象实例  173
6.5.1 动机  173
6.5.2 范例代码  174
6.5.3 模式小结  176
6.6 读写锁模式—实现有目的的线程阻塞  176
6.6.1 动机  176
6.6.2 范例代码  177
6.6.3 模式小结  178
6.7 生产者–消费者模式—解耦执行逻辑  180
6.7.1 动机  180
6.7.2 范例代码  180
6.7.3 模式小结  181
6.8 调度器模式—执行孤立的任务  182
6.8.1 动机  182
6.8.2 范例代码  183
6.8.3 模式小结  187
6.9 线程池模式—有效地利用线程  187
6.9.1 动机  187
6.9.2 范例代码  187
6.9.3 模式小结  188
6.10 小结  189
6.11 习题  190
6.12 参考资料  190
第7章 常见的反模式  191
7.1 技术准备  192
7.2 什么是反模式,怎样发现反模式  192
7.2.1 从是否违背开发原则的角度发现反模式  192
7.2.2 注意那些有可能形成瓶颈的技术债务  192
7.2.3 不要错误地使用Java平台的功能  193
7.2.4 选择合适的工具  195
7.2.5 代码坏味反模式小结  196
7.3 认识软件开发中常见的反模式  197
7.3.1 意大利面条式的代码  197
7.3.2 复制粘贴式编程  198
7.3.3 blob  198
7.3.4 熔岩流  199
7.3.5 功能分散  199
7.3.6 船锚  199
7.3.7 软件开发中的反模式小结  200
7.4 软件架构中的反模式  200
7.4.1 金锤  200
7.4.2 频繁更替  200
7.4.3 输入问题  201
7.4.4 雷区探险  201
7.4.5 用意不明  202
7.4.6 幽灵  202
7.4.7 死路  202
7.4.8 软件架构中的反模式小结  203
7.5 小结  203
7.6 参考资料  204
习题参考答案  205
第1章  205
第2章  205
第3章  206
第4章  206
第5章  207
第6章  207

本目录推荐