新書推薦:
《
姑苏繁华图
》
售價:HK$
684.4
《
人的消逝:从原子弹、互联网到人工智能
》
售價:HK$
103.8
《
想象的共同体--民族主义的起源与散布(增订版)
》
售價:HK$
77.3
《
医学图形图像处理基于Python VTK的实现
》
售價:HK$
166.9
《
山家清供:小楷插图珍藏本 谦德国学文库系列
》
售價:HK$
143.4
《
政略与战略论
》
售價:HK$
140.0
《
百年词史-(1900-2000(全二册))
》
售價:HK$
333.8
《
RDI人际关系发展疗法:修复孤独症核心障碍,让干预回归生活
》
售價:HK$
99.7
|
編輯推薦: |
对于开发人员来说,掌握设计模式有助于提高代码质量,促进代码重用,增强架构健壮性。随着编程语言的不断发展,新特性层出不穷,在其被广泛使用前,程序员往往需要花费大量时间去理解和掌握。本书的目的就是降低新技术趋势的接受难度,为程序员提供良好的应用实践。
本书向你展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。
你将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,本书将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,*后介绍Java新版本的功能特性及其实践。
通过本书的学习,你可以有效地解决开发应用程序过程中的常见问题,能够轻松地应对各种规模项目的扩展和维护。具体包括:
● 理解面向对象编程和函数式编程范式
● 探究传统Java设计模式的使用方式
● 了解Java的新功能特性及其对经典设计模式的影响
|
內容簡介: |
本书向读者展示Java语言中更加智能化的编码实例。书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如何利用函数式编程特性改变经典的设计模式。读者将学习混合使用OOP和FP的实现方式,然后学习响应式编程模型——一种为了编写更好的代码而将OOP和FP结合使用的方法。之后,本书将介绍从MVC架构向微服务和无服务器架构转变的发展趋势,*后介绍Java新版本的功能特性及其实践。通过本书的学习,读者可以有效地解决开发应用程序过程中的常见问题,能够轻松地应对各种规模项目的扩展和维护。
|
關於作者: |
卡马尔米特辛格(Kamalmeet Singh),在15岁时首次尝试了编程并立刻爱上了它。他在获得信息技术学士学位之后加入了一家创业公司,在那里进一步提升了对Java编程的热爱之情。IT行业13年的工作经验,以及在不同的公司、国家和领域的沉淀,使他成长为一名开发人员和技术架构师。他使用的技术包括云计算、机器学习、增强现实、无服务器应用程序、微服务等,但他的爱仍然是Java。
艾德里安伊恩库列斯库(Adrian Ianculescu),一名拥有20年编程经验的软件开发人员,其中12年使用Java。他在2-40人的团队中工作,他意识到开发软件不仅仅是编写代码,而对以不同的方法和框架设计软件和架构产生了兴趣。在公司工作一段时间之后,他开始转变为自由职业者和企业家,以追随他童年时代的梦想制作游戏。
卡马尔米特辛格(Kamalmeet Singh),在15岁时首次尝试了编程并立刻爱上了它。他在获得信息技术学士学位之后加入了一家创业公司,在那里进一步提升了对Java编程的热爱之情。IT行业13年的工作经验,以及在不同的公司、国家和领域的沉淀,使他成长为一名开发人员和技术架构师。他使用的技术包括云计算、机器学习、增强现实、无服务器应用程序、微服务等,但他的爱仍然是Java。
艾德里安伊恩库列斯库(Adrian Ianculescu),一名拥有20年编程经验的软件开发人员,其中12年使用Java。他在2-40人的团队中工作,他意识到开发软件不仅仅是编写代码,而对以不同的方法和框架设计软件和架构产生了兴趣。在公司工作一段时间之后,他开始转变为自由职业者和企业家,以追随他童年时代的梦想制作游戏。
路西安-保罗托尔耶(Lucian-Paul Torje),一位有抱负的软件工匠,在软件行业工作了近15年,几乎对所有与技术有关的事情都感兴趣,这就是他涉猎广泛的原因,包括从MS-DOSTSR到微服务,从Atmel微控制器到Android、iOS和Chromebook,从CC到Java,从Oracle到MongoDB。
译者简介:
张小坤,软件开发工程师、项目经理、系统架构师,毕业于北京理工大学软件学院,长期从事系统设计开发工作,经验丰富,对设计模式有深刻的认识和理解。
黄凯,系统架构师,毕业于北京理工大学软件学院,一直从事软件研发工作,对设计模式与实际开发中的应用具有较为丰富的经验。
贺涛,高级软件工程师、项目经理,长期致力于系统设计和应用研发工作,实践经验丰富。
|
目錄:
|
译者序
前言
关于作者
关于评审者
第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 MapReduce106
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 安装RxJava115
6.3.1 Maven下的安装115
6.3.2 JShell下的安装116
6.4 Observable、Flowable、Observer和Subscription的含义116
6.5 创建Observable118
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 转换Observable122
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 过滤Observable125
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?irstlast操作符127
6.7.6 sample操作符128
6.7.7 skip操作符128
6.7.8 take操作符128
6.8 组合Observable128
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 Subject135
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,通过注册并登录个人账号下载。
|
|