编辑推荐

对于开发人员来说,掌握设计模式有助于提高代码质量,促进代码重用,增强架构健壮性。随着编程语言的不断发展,新特性层出不穷,在其被广泛使用前,程序员往往需要花费大量时间去理解和掌握。《Java设计模式及实践》的目的就是降低新技术趋势的接受难度,为程序员提供良好的应用实践。
Java设计模式及实践》向你展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。
你将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,《Java设计模式及实践》将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,*后介绍Java新版本的功能特性及其实践。
通过《Java设计模式及实践》的学习,你可以有效地解决开发应用程序过程中的常见问题,能够轻松地应对各种规模项目的扩展和维护。具体包括:
? ● 理解面向对象编程和函数式编程范式
? ● 探究传统Java设计模式的使用方式
? ● 了解Java的新功能特性及其对经典设计模式的影响
? ● 了解响应式编程及其作为增强版的函数式编程的原因
? ● 应用响应式编程模式并探寻其解决常见问题的好方法
? ● 了解架构的发展趋势和从MVC架构到无服务器应用架构的转变
? ● 应用Java的新功能特性及其实践

内容简介

  对于开发人员来说,掌握设计模式有助于提高代码质量,促进代码重用,增强架构健壮性。随着编程语言的不断发展,新特性层出不穷,在其被广泛使用前,程序员往往需要花费大量时间去理解和掌握。
  《Java设计模式及实践》的目的就是降低新技术趋势的接受难度,为程序员提供良好的应用实践。
  《Java设计模式及实践》向你展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。
  你将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。
  之后,《Java设计模式及实践》将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,最后介绍Java新版本的功能特性及其实践。
  通过《Java设计模式及实践》的学习,你可以有效地解决开发应用程序过程中的常见问题,轻松地应对各种规模项目的扩展和维护。具体包括:
  理解面向对象编程和函数式编程范式
  探究传统Java设计模式的使用方式
  了解Java的新功能特性及其对经典设计模式的影响
  了解响应式编程及其作为增强版的函数式编程的原因
  应用响应式编程模式并探寻其解决常见问题的好方法
  了解架构的发展趋势和从MVC架构到无服务器应用架构的转变
  应用Java的新功能特性及其实践

作者简介

  卡马尔米特·辛格(KamalmeetSingh),在15岁时首次尝试了编程并立刻爱上了它。他在获得信息技术学士学位之后加入了一家创业公司,在那里进一步提升了对Java编程的热爱之情。IT行业13年的工作经验,以及在不同的公司、国家和领域的沉淀,使他成长为一名开发人员和技术架构师。他使用的技术包括云计算、机器学习、增强现实、无服务器应用程序、微服务等,但他的爱仍然是Java。
  
  艾德里安·伊恩库列斯库(AdrianIanculescu),一名拥有20年编程经验的软件开发人员,其中12年使用Java。他在2-40人的团队中工作,他意识到开发软件不仅仅是编写代码,而对以不同的方法和框架设计软件和架构产生了兴趣。在公司工作一段时间之后,他开始转变为自由职业者和企业家,以追随他童年时代的梦想——制作游戏。
  
  路西安-保罗·托尔耶(Lucian-PaulTorje),一位有抱负的软件工匠,在软件行业工作了近15年,几乎对所有与技术有关的事情都感兴趣,这就是他涉猎广泛的原因,包括从MS-DOSTSR到微服务,从Atmel微控制器到Android、iOS和Chromebook,从C/C++到Java,从Oracle到MongoDB。
  
  张小坤,软件开发工程师、项目经理、系统架构师,毕业于北京理工大学软件学院,长期从事系统设计开发工作,经验丰富,对设计模式有深刻的认识和理解。
  
  黄凯,系统架构师,毕业于北京理工大学软件学院,一直从事软件研发工作,对设计模式与实际开发中的应用具有较为丰富的经验。
  
  贺涛,高级软件工程师、项目经理,长期致力于系统设计和应用研发工作,实践经验丰富。

目录

译者序
前言
关于作者
关于评审者
第1章 从面向对象到函数式编程1
11 Java简介1
12 Java编程范式2
121 命令式编程2
122 面向对象编程3
123 声明式编程6
124 函数式编程6
13 流以及集合的使用7
14 统一建模语言简介8
15 设计模式和原则11
151 单一职责原则12
152 开闭原则13
153 里氏替换原则13
154 接口隔离原则14
155 依赖倒置原则16
16 总结16
第2章 创建型模式18
21 单例模式18
211 同步锁单例模式19
212 拥有双重校验锁机制的同步锁单例模式20
213 无锁的线程安全单例模式21
214 提前加载和延迟加载21
22 工厂模式22
221 简单工厂模式22
222 工厂方法模式25
223 抽象工厂模式27
224 简单工厂、工厂方法与抽象工厂模式之间的对比28
23 建造者模式29
231 汽车建造者样例30
232 简化的建造者模式32
233 拥有方法链的匿名建造者32
24 原型模式33
25 对象池模式34
26 总结36
第3章 行为型模式37
31 责任链模式38
32 命令模式40
33 解释器模式43
34 迭代器模式47
35 观察者模式50
36 中介者模式51
37 备忘录模式53
38 状态模式55
39 策略模式55
310 模板方法模式56
311 空对象模式57
312 访问者模式58
313 总结59
第4章 结构型模式60
41 适配器模式61
42 代理模式66
43 装饰器模式70
44 桥接模式73
45 组合模式76
46 外观模式79
47 享元模式83
48 总结88
第5章 函数式编程89
51 函数式编程简介89
511 lambda表达式91
512 纯函数92
513 引用透明性92
514 初等函数93
515 高阶函数93
516 组合93
517 柯里化93
518 闭包94
519 不可变性95
5110 函子95
5111 单子96
52 Java中的函数式编程97
521 lambda表达式97
522 流98
53 重新实现面向对象编程设计模式102
531 单例模式102
532 建造者模式102
533 适配器模式103
534 装饰器模式103
535 责任链模式103
536 命令模式104
537 解释器模式104
538 迭代器模式104
539 观察者模式105
5310 策略模式105
5311 模板方法模式105
54 函数式设计模式106
541 MapReduce106
542 借贷模式107
543 尾调用优化108
544 记忆化109
545 执行around方法110
55 总结111
第6章 响应式编程112
61 什么是响应式编程113
62 RxJava简介114
63 安装RxJava115
631 Maven下的安装115
632 JShell下的安装116
64 Observable、Flowable、Observer和Subscription的含义116
65 创建Observable118
651 create操作符118
652 defer操作符119
653 empty操作符120
654 from操作符120
655 interval操作符120
656 timer操作符121
657 range操作符121
658 repeat操作符121
66 转换Observable122
661 subscribe操作符122
662 buffer操作符122
663 flatMap操作符122
664 groupBy操作符124
665 map操作符124
666 scan操作符125
667 window操作符125
67 过滤Observable125
671 debounce操作符125
672 distinct操作符126
673 elementAt操作符126
674 f?ilter操作符127
675 f?irst/last操作符127
676 sample操作符128
677 skip操作符128
678 take操作符128
68 组合Observable128
681 combine操作符129
682 join操作符129
683 merge操作符130
684 zip操作符131
69 异常处理131
691 catch操作符131
692 do操作符132
693 using操作符133
694 retry操作符133
610 线程调度器134
611 Subject135
612 示例项目136
613 总结139
第7章 响应式设计模式140
71 响应模式140
711 请求-响应模式140
712 异步通信模式146
713 缓存模式148
714 扇出与最快响应模式149
715 快速失败模式150
72 弹性模式150
721 断路器模式150
722 故障处理模式151
723 有限队列模式151
724 监控模式152
725 舱壁模式152
73 柔性模式152
731 单一职责模式153
732 无状态服务模式154
733 自动伸缩模式156
734 自包含模式156
74 消息驱动通信模式157
741 事件驱动通信模式157
742 出版者-订阅者模式157
743 幂等性模式158
75 总结158
第8章 应用架构的发展趋势159
81 什么是应用架构159
82 分层架构160
821 分层架构示例162
822 tier和layer的区别1

前言/序言

借助设计模式,开发者可以改进代码库,提高代码可重用性,并使技术架构更加健壮。随着编程语言的不断发展,新的语言特性在得到广泛应用之前往往需要大量时间去理解。《Java设计模式及实践》旨在降低接受最新趋势的难度,为开发人员提供良好的实例。
Java设计模式及实践》的目标读者
Java设计模式及实践》适用于每一位有意愿编写高质量代码的Java开发人员。《Java设计模式及实践》讲述了很多开发者在编码时经常疏忽的最佳实践。书中涵盖了许多设计模式,这些设计模式经开发团队实践和测试过,是用来解决特定问题的最佳方案。
Java设计模式及实践》内容
第1章介绍了Java语言不同的编程范式。
第2章介绍了多种设计模式中的创建型模式,讲述了多种类型的创建型设计模式。
第3章介绍了行为型设计模式,主要解析了多种用来管理代码和对象行为的设计模式。
第4章介绍了结构型设计模式,详细解析了用于管理对象结构的设计模式。
第5章向读者介绍了函数式编程及与之相关的设计模式。
第6章通过实例介绍了响应式编程及其Java实现。
第7章进一步探索了响应式编程的核心内容及与之相关的设计模式。
第8章从MVC架构到微服务和无服务器应用,探索了近年来开发者尝试和测试过的多种架构模式。
第9章介绍了Java的历史、最佳实践和最新版Java中的更新,并在最后表达了作者对Java未来的期待。
如何充分利用《Java设计模式及实践
拥有Java开发经验者将能从《Java设计模式及实践》中获益良多,推荐读者在阅读过程中探索并充分实践各章中提供的示例代码。
下载示例代码及彩色图像
Java设计模式及实践》的示例代码及所有截图和图表,可以从http://wwwpacktpubcom通过个人账号下载,也可以访问华章图书官网http://wwwhzbookcom,通过注册并登录个人账号下载。

其他推荐