Java设计模式及实践 [Design Patterns and Best Practices in Java] pdf

Java设计模式及实践 [Design Patterns and Best Practices in Java]

内容简介

《Java设计模式及实践》的目的就是降低新技术趋势的接受难度,为程序员提供良好的应用实践。

《Java设计模式及实践》向你展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。

你将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,《Java设计模式及实践》将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,最后介绍Java新版本的功能特性及其实践。通过《Java设计模式及实践》的学习,你可以有效地解决开发应用程序过程中的常见问题,轻松地应对各种规模项目的扩展和维护。具体包括:

  • 理解面向对象编程和函数式编程范式
  • 探究传统Java设计模式的使用方式
  • 了解Java的新功能特性及其对经典设计模式的影响
  • 了解响应式编程及其作为增强版的函数式编程的原因
  • 应用响应式编程模式并探寻其解决常见问题的好方法
  • 了解架构的发展趋势和从MVC架构到无服务器应用架构的转变
  • 应用Java的新功能特性及其实践

作者简介

卡马尔米特·辛格(Kamalmeet Singh),在15岁时首次尝试了编程并立刻爱上了它。他在获得信息技术学士学位之后加入了一家创业公司,在那里进一步提升了对Java编程的热爱之情。IT行业13年的工作经验,以及在不同的公司、国家和领域的沉淀,使他成长为一名开发人员和技术架构师。他使用的技术包括云计算、机器学习、增强现实、无服务器应用程序、微服务等,但他的爱仍然是Java。

艾德里安·伊恩库列斯库(Adrian Ianculescu),一名拥有20年编程经验的软件开发人员,其中12年使用Java。他在2-40人的团队中工作,他意识到开发软件不仅仅是编写代码,而对以不同的方法和框架设计软件和架构产生了兴趣。在公司工作一段时间之后,他开始转变为自由职业者和企业家,以追随他童年时代的梦想——制作游戏。

路西安-保罗·托尔耶(Lucian-Paul Torje),一位有抱负的软件工匠,在软件行业工作了近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 MapReduce 106
542 借贷模式 107
543 尾调用优化 108
544 记忆化 109
545 执行around方法 110
55 总结 111
第6章 响应式编程 112
61 什么是响应式编程 113
62 RxJava简介 114
63 安装RxJava 115
631 Maven下的安装 115
632 JShell下的安装 116
64 Observable、Flowable、Observer和Subscription的含义 116
65 创建Observable 118
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 转换Observable 122
661 subscribe操作符 122
662 buffer操作符 122
663 flatMap操作符 122
664 groupBy操作符 124
665 map操作符 124
666 scan操作符 125
667 window操作符 125
67 过滤Observable 125
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 组合Observable 128
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 Subject 135
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的封装性很好,拿访问控制符来讲,没有权限的类或方法是不能访问的。如public,都可访问;private,只有本类中方法可访问;protected位于两者之间,位于本包中对象可访问。

组合和继承都允许在新的类中放置子对象,组合是显式的,继承是隐示的。final的含义:常量数值则永不改变,对象引用则引用永不改变,但Java未提供任何对象永不改变的方法。所有private方法都隐式的指定为final,但覆盖只有非private的才行。

多态,分离做什么和怎么做,是数据抽象和继承后的第三种基本特征,消除类型之间的耦合关系。如工人和农民都要吃饭,干活则是不同的,并且可以添加新的功能。组合与继承,首选组合,因为它更加灵活,可以动态选择行为;

接口和内部类为我们提供一种将接口与实现分享的更加结构化的方法。抽象类是希望通过这个通用接口操纵一系列类,包括抽象方法的类就叫抽象类。接口允许创建者确定方法名、参数列表和返回类型,接口的域隐式的是static和final的。接口相当于多继承,可以有多个实现;而内部类可以协助当前类进行多继承。

内部类,将一个类的定义放在另一个类的内部定义,它拥有对外部类所有元素的访问权,创建不依赖于外部类。当然如果不需要,则可以将内部类声明为static,命名嵌套类,则它不产生默认指向创建它的外围类。内部类的好处之一是,可以协助外部类实现多继承,哈哈!同时接口也可以有内部类的,自动public和static。内部类不可以被覆盖,局部内部类不能有访问控件符。

在使用组合的过程中,要尽量避免方法名相同

代理:在类中添加一个成员对象,同时在新类中暴露该成员对象的所有方法。同组合模式

向上转型:从一个较专用类型向较通用类型转换。

适配器:接受你所拥有的接口,并产生你想要的接口,例:正序和反序输出。

策略:执行某操作的方法,接受一个你指定的接口。声明:你可以用任何你想要的对象来调用我的方法,只要你遵循我的接口。意思就是你实现我的接口,不管你是什么类,都可以来执行这个方法。

工厂:不同类调用同一接口返回不同结果。如public interface Factory<T>{};

装饰器:使用分层对象来动态透明地向单个对象中添加责任,最初周围对象都具有相同的基本接口,即拥有一个可以向对象发送的公共消息集。

动态代理:每个混入的类都必须是某个接口的实现。

会员免费下载

链接:https://pan.baidu.com/s/1n0FB4CC_zeWlORbBbhQTpQ

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

Java设计模式

资源推荐

免费 图解数据结构:使用Java

C++ 程序设计语言:第4部分 标准库(原书第4版)

C++编程思想(两卷合订本)

CSS世界

JavaScript DOM编程艺术(第2版)

C++ Primer Plus(第6版) 中文版

Vue.js快速入门

Java编程思想(第4版) [thinking in java]

Copyright © 2021-2022 知识猫. All Rights Reserved.