描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111629436
产品特色
编辑推荐
对于开发人员来说,掌握设计模式有助于提高代码质量,促进代码重用,增强架构健壮性。随着编程语言的不断发展,新特性层出不穷,在其被广泛使用前,程序员往往需要花费大量时间去理解和掌握。本书的目的就是降低新技术趋势的接受难度,为程序员提供良好的应用实践。
本书向你展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。
你将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,本书将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,*后介绍Java新版本的功能特性及其实践。
通过本书的学习,你可以有效地解决开发应用程序过程中的常见问题,能够轻松地应对各种规模项目的扩展和维护。具体包括:
● 理解面向对象编程和函数式编程范式
● 探究传统Java设计模式的使用方式
● 了解Java的新功能特性及其对经典设计模式的影响
● 了解响应式编程及其作为增强版的函数式编程的原因
● 应用响应式编程模式并探寻其解决常见问题的好方法
● 了解架构的发展趋势和从MVC架构到无服务器应用架构的转变
● 应用Java的新功能特性及其实践
本书向你展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。
你将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,本书将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,*后介绍Java新版本的功能特性及其实践。
通过本书的学习,你可以有效地解决开发应用程序过程中的常见问题,能够轻松地应对各种规模项目的扩展和维护。具体包括:
● 理解面向对象编程和函数式编程范式
● 探究传统Java设计模式的使用方式
● 了解Java的新功能特性及其对经典设计模式的影响
● 了解响应式编程及其作为增强版的函数式编程的原因
● 应用响应式编程模式并探寻其解决常见问题的好方法
● 了解架构的发展趋势和从MVC架构到无服务器应用架构的转变
● 应用Java的新功能特性及其实践
内容简介
本书向读者展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。读者将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,本书将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,*后介绍Java新版本的功能特性及其实践。通过本书的学习,读者可以有效地解决开发应用程序过程中的常见问题,能够轻松地应对各种规模项目的扩展和维护。
目 录
译者序
前言
关于作者
关于评审者
第1章 从面向对象到函数式编程 1
1.1 Java简介 1
1.2 Java编程范式 2
1.2.1 命令式编程 2
1.2.2 面向对象编程 3
1.2.3 声明式编程 6
1.2.4 函数式编程 6
1.3 流以及集合的使用 7
1.4 统一建模语言简介 8
1.5 设计模式和原则 11
1.5.1 单一职责原则 12
1.5.2 开闭原则 13
1.5.3 里氏替换原则 13
1.5.4 接口隔离原则 14
1.5.5 依赖倒置原则 16
1.6 总结 16
第2章 创建型模式 18
2.1 单例模式 18
2.1.1 同步锁单例模式 19
2.1.2 拥有双重校验锁机制的同步锁单例模式 20
2.1.3 无锁的线程安全单例模式 21
2.1.4 提前加载和延迟加载 21
2.2 工厂模式 22
2.2.1 简单工厂模式 22
2.2.2 工厂方法模式 25
2.2.3 抽象工厂模式 27
2.2.4 简单工厂、工厂方法与抽象工厂模式之间的对比 28
2.3 建造者模式 29
2.3.1 汽车建造者样例 30
2.3.2 简化的建造者模式 32
2.3.3 拥有方法链的匿名建造者 32
2.4 原型模式 33
2.5 对象池模式 34
2.6 总结 36
第3章 行为型模式 37
3.1 责任链模式 38
3.2 命令模式 40
3.3 解释器模式 43
3.4 迭代器模式 47
3.5 观察者模式 50
3.6 中介者模式 51
3.7 备忘录模式 53
3.8 状态模式 55
3.9 策略模式 55
3.10 模板方法模式 56
3.11 空对象模式 57
3.12 访问者模式 58
3.13 总结 59
第4章 结构型模式 60
4.1 适配器模式 61
4.2 代理模式 66
4.3 装饰器模式 70
4.4 桥接模式 73
4.5 组合模式 76
4.6 外观模式 79
4.7 享元模式 83
4.8 总结 88
第5章 函数式编程 89
5.1 函数式编程简介 89
5.1.1 lambda表达式 91
5.1.2 纯函数 92
5.1.3 引用透明性 92
5.1.4 初等函数 93
5.1.5 高阶函数 93
5.1.6 组合 93
5.1.7 柯里化 93
5.1.8 闭包 94
5.1.9 不可变性 95
5.1.10 函子 95
5.1.11 单子 96
5.2 Java中的函数式编程 97
5.2.1 lambda表达式 97
5.2.2 流 98
5.3 重新实现面向对象编程设计模式 102
5.3.1 单例模式 102
5.3.2 建造者模式 102
5.3.3 适配器模式 103
5.3.4 装饰器模式 103
5.3.5 责任链模式 103
5.3.6 命令模式 104
5.3.7 解释器模式 104
5.3.8 迭代器模式 104
5.3.9 观察者模式 105
5.3.10 策略模式 105
5.3.11 模板方法模式 105
5.4 函数式设计模式 106
5.4.1 MapReduce 106
5.4.2 借贷模式 107
5.4.3 尾调用优化 108
5.4.4 记忆化 109
5.4.5 执行around方法 110
5.5 总结 111
第6章 响应式编程 112
6.1 什么是响应式编程 113
6.2 RxJava简介 114
6.3 安装RxJava 115
6.3.1 Maven下的安装 115
6.3.2 JShell下的安装 116
6.4 Observable、Flowable、Observer和Subscription的含义 116
6.5 创建Observable 118
6.5.1 create操作符 118
6.5.2 defer操作符 119
6.5.3 empty操作符 120
6.5.4 from操作符 120
6.5.5 interval操作符 120
6.5.6 timer操作符 121
6.5.7 range操作符 121
6.5.8 repeat操作符 121
6.6 转换Observable 122
6.6.1 subscribe操作符 122
6.6.2 buffer操作符 122
6.6.3 flatMap操作符 122
6.6.4 groupBy操作符 124
6.6.5 map操作符 124
6.6.6 scan操作符 125
6.6.7 window操作符 125
6.7 过滤Observable 125
6.7.1 debounce操作符 125
6.7.2 distinct操作符 126
6.7.3 elementAt操作符 126
6.7.4 f?ilter操作符 127
6.7.5 f?irst/last操作符 127
6.7.6 sample操作符 128
6.7.7 skip操作符 128
6.7.8 take操作符 128
6.8 组合Observable 128
6.8.1 combine操作符 129
6.8.2 join操作符 129
6.8.3 merge操作符 130
6.8.4 zip操作符 131
6.9 异常处理 131
6.9.1 catch操作符 131
6.9.2 do操作符 132
6.9.3 using操作符 133
6.9.4 retry操作符 133
6.10 线程调度器 134
6.11 Subject 135
6.12 示例项目 136
6.13 总结 139
第7章 响应式设计模式 140
7.1 响应模式 140
7.1.1 请求-响应模式 140
7.1.2 异步通信模式 146
7.1.3 缓存模式 148
7.1.4 扇出与最快响应模式 149
7.1.5 快速失败模式 150
7.2 弹性模式 150
7.2.1 断路器模式 150
7.2.2 故障处理模式 151
7.2.3 有限队列模式 151
7.2.4 监控模式 152
7.2.5 舱壁模式 152
7.3 柔性模式 152
7.3.1 单一职责模式 153
7.3.2 无状态服务模式 154
7.3.3 自动伸缩模式 156
7.3.4 自包含模式 156
7.4 消息驱动通信模式 157
7.4.1 事件驱动通信模式 157
7.4.2 出版者-订阅者模式 157
7.4.3 幂等性模式 158
7.5 总结 158
第8章 应用架构的发展趋势 159
8.1 什么是应用架构 159
8.2 分层架构 160
8.2.1 分层架构示例 162
8.2.2 tier和layer的区别 1
前言
关于作者
关于评审者
第1章 从面向对象到函数式编程 1
1.1 Java简介 1
1.2 Java编程范式 2
1.2.1 命令式编程 2
1.2.2 面向对象编程 3
1.2.3 声明式编程 6
1.2.4 函数式编程 6
1.3 流以及集合的使用 7
1.4 统一建模语言简介 8
1.5 设计模式和原则 11
1.5.1 单一职责原则 12
1.5.2 开闭原则 13
1.5.3 里氏替换原则 13
1.5.4 接口隔离原则 14
1.5.5 依赖倒置原则 16
1.6 总结 16
第2章 创建型模式 18
2.1 单例模式 18
2.1.1 同步锁单例模式 19
2.1.2 拥有双重校验锁机制的同步锁单例模式 20
2.1.3 无锁的线程安全单例模式 21
2.1.4 提前加载和延迟加载 21
2.2 工厂模式 22
2.2.1 简单工厂模式 22
2.2.2 工厂方法模式 25
2.2.3 抽象工厂模式 27
2.2.4 简单工厂、工厂方法与抽象工厂模式之间的对比 28
2.3 建造者模式 29
2.3.1 汽车建造者样例 30
2.3.2 简化的建造者模式 32
2.3.3 拥有方法链的匿名建造者 32
2.4 原型模式 33
2.5 对象池模式 34
2.6 总结 36
第3章 行为型模式 37
3.1 责任链模式 38
3.2 命令模式 40
3.3 解释器模式 43
3.4 迭代器模式 47
3.5 观察者模式 50
3.6 中介者模式 51
3.7 备忘录模式 53
3.8 状态模式 55
3.9 策略模式 55
3.10 模板方法模式 56
3.11 空对象模式 57
3.12 访问者模式 58
3.13 总结 59
第4章 结构型模式 60
4.1 适配器模式 61
4.2 代理模式 66
4.3 装饰器模式 70
4.4 桥接模式 73
4.5 组合模式 76
4.6 外观模式 79
4.7 享元模式 83
4.8 总结 88
第5章 函数式编程 89
5.1 函数式编程简介 89
5.1.1 lambda表达式 91
5.1.2 纯函数 92
5.1.3 引用透明性 92
5.1.4 初等函数 93
5.1.5 高阶函数 93
5.1.6 组合 93
5.1.7 柯里化 93
5.1.8 闭包 94
5.1.9 不可变性 95
5.1.10 函子 95
5.1.11 单子 96
5.2 Java中的函数式编程 97
5.2.1 lambda表达式 97
5.2.2 流 98
5.3 重新实现面向对象编程设计模式 102
5.3.1 单例模式 102
5.3.2 建造者模式 102
5.3.3 适配器模式 103
5.3.4 装饰器模式 103
5.3.5 责任链模式 103
5.3.6 命令模式 104
5.3.7 解释器模式 104
5.3.8 迭代器模式 104
5.3.9 观察者模式 105
5.3.10 策略模式 105
5.3.11 模板方法模式 105
5.4 函数式设计模式 106
5.4.1 MapReduce 106
5.4.2 借贷模式 107
5.4.3 尾调用优化 108
5.4.4 记忆化 109
5.4.5 执行around方法 110
5.5 总结 111
第6章 响应式编程 112
6.1 什么是响应式编程 113
6.2 RxJava简介 114
6.3 安装RxJava 115
6.3.1 Maven下的安装 115
6.3.2 JShell下的安装 116
6.4 Observable、Flowable、Observer和Subscription的含义 116
6.5 创建Observable 118
6.5.1 create操作符 118
6.5.2 defer操作符 119
6.5.3 empty操作符 120
6.5.4 from操作符 120
6.5.5 interval操作符 120
6.5.6 timer操作符 121
6.5.7 range操作符 121
6.5.8 repeat操作符 121
6.6 转换Observable 122
6.6.1 subscribe操作符 122
6.6.2 buffer操作符 122
6.6.3 flatMap操作符 122
6.6.4 groupBy操作符 124
6.6.5 map操作符 124
6.6.6 scan操作符 125
6.6.7 window操作符 125
6.7 过滤Observable 125
6.7.1 debounce操作符 125
6.7.2 distinct操作符 126
6.7.3 elementAt操作符 126
6.7.4 f?ilter操作符 127
6.7.5 f?irst/last操作符 127
6.7.6 sample操作符 128
6.7.7 skip操作符 128
6.7.8 take操作符 128
6.8 组合Observable 128
6.8.1 combine操作符 129
6.8.2 join操作符 129
6.8.3 merge操作符 130
6.8.4 zip操作符 131
6.9 异常处理 131
6.9.1 catch操作符 131
6.9.2 do操作符 132
6.9.3 using操作符 133
6.9.4 retry操作符 133
6.10 线程调度器 134
6.11 Subject 135
6.12 示例项目 136
6.13 总结 139
第7章 响应式设计模式 140
7.1 响应模式 140
7.1.1 请求-响应模式 140
7.1.2 异步通信模式 146
7.1.3 缓存模式 148
7.1.4 扇出与最快响应模式 149
7.1.5 快速失败模式 150
7.2 弹性模式 150
7.2.1 断路器模式 150
7.2.2 故障处理模式 151
7.2.3 有限队列模式 151
7.2.4 监控模式 152
7.2.5 舱壁模式 152
7.3 柔性模式 152
7.3.1 单一职责模式 153
7.3.2 无状态服务模式 154
7.3.3 自动伸缩模式 156
7.3.4 自包含模式 156
7.4 消息驱动通信模式 157
7.4.1 事件驱动通信模式 157
7.4.2 出版者-订阅者模式 157
7.4.3 幂等性模式 158
7.5 总结 158
第8章 应用架构的发展趋势 159
8.1 什么是应用架构 159
8.2 分层架构 160
8.2.1 分层架构示例 162
8.2.2 tier和layer的区别 1
前 言
借助设计模式,开发者可以改进代码库,提高代码可重用性,并使技术架构更加健壮。随着编程语言的不断发展,新的语言特性在得到广泛应用之前往往需要大量时间去理解。本书旨在降低接受最新趋势的难度,为开发人员提供良好的实例。
本书的目标读者
本书适用于每一位有意愿编写高质量代码的Java开发人员。本书讲述了很多开发者在编码时经常疏忽的最佳实践。书中涵盖了许多设计模式,这些设计模式经开发团队实践和测试过,是用来解决特定问题的最佳方案。
本书内容
第1章介绍了Java语言不同的编程范式。
第2章介绍了多种设计模式中的创建型模式,讲述了多种类型的创建型设计模式。
第3章介绍了行为型设计模式,主要解析了多种用来管理代码和对象行为的设计模式。
第4章介绍了结构型设计模式,详细解析了用于管理对象结构的设计模式。
第5章向读者介绍了函数式编程及与之相关的设计模式。
第6章通过实例介绍了响应式编程及其Java实现。
第7章进一步探索了响应式编程的核心内容及与之相关的设计模式。
第8章从MVC架构到微服务和无服务器应用,探索了近年来开发者尝试和测试过的多种架构模式。
第9章介绍了Java的历史、最佳实践和最新版Java中的更新,并在最后表达了作者对Java未来的期待。
如何充分利用本书
拥有Java开发经验者将能从本书中获益良多,推荐读者在阅读过程中探索并充分实践各章中提供的示例代码。
下载示例代码及彩色图像
本书的示例代码及所有截图和图表,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的目标读者
本书适用于每一位有意愿编写高质量代码的Java开发人员。本书讲述了很多开发者在编码时经常疏忽的最佳实践。书中涵盖了许多设计模式,这些设计模式经开发团队实践和测试过,是用来解决特定问题的最佳方案。
本书内容
第1章介绍了Java语言不同的编程范式。
第2章介绍了多种设计模式中的创建型模式,讲述了多种类型的创建型设计模式。
第3章介绍了行为型设计模式,主要解析了多种用来管理代码和对象行为的设计模式。
第4章介绍了结构型设计模式,详细解析了用于管理对象结构的设计模式。
第5章向读者介绍了函数式编程及与之相关的设计模式。
第6章通过实例介绍了响应式编程及其Java实现。
第7章进一步探索了响应式编程的核心内容及与之相关的设计模式。
第8章从MVC架构到微服务和无服务器应用,探索了近年来开发者尝试和测试过的多种架构模式。
第9章介绍了Java的历史、最佳实践和最新版Java中的更新,并在最后表达了作者对Java未来的期待。
如何充分利用本书
拥有Java开发经验者将能从本书中获益良多,推荐读者在阅读过程中探索并充分实践各章中提供的示例代码。
下载示例代码及彩色图像
本书的示例代码及所有截图和图表,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
媒体评论
免费在线读
评论
还没有评论。