新書推薦:
《
妈妈,你好吗?(一封写给妈妈的“控诉”信,日本绘本奖作品)
》
售價:HK$
42.6
《
保守主义:为传统而战
》
售價:HK$
154.6
《
不同境遇的36岁:无尽与有限+人生半熟
》
售價:HK$
112.0
《
小时光 油画棒慢绘零基础教程
》
售價:HK$
88.5
《
可控性混乱
》
售價:HK$
66.1
《
篡魏:司马懿和他的夺权同盟
》
售價:HK$
65.0
《
狂飙年代:18世纪俄国的新文化和旧文化(第三卷)
》
售價:HK$
177.0
《
协和专家大医说:医话肿瘤
》
售價:HK$
109.8
|
編輯推薦: |
本书完全将设计模式和实战结合,将一个完整的电商项目核心模块融入书中,同时还有Apollo配置中心、Spring状态机等核心组件代码的讲解。
|
內容簡介: |
本书以互联网项目核心模块为基准,将设计模式融入核心模块的开发之中,整个过程犹如一个整体项目需求,完成设计模式的融入。从第2章到第12章,依次对核心项目模块进行设计模式的融入,本书所涉及到的核心模块依次为:多种第三方账号登录;产品分类目录管理;商品查询;多种类支付;商品订单状态变化;订单完成后的业务投放及策略实时变更;开具增值税发票;商品代付;积分、平台币、红包发放;多种类日志设计;日志解析。
|
關於作者: |
B站技术博主河北王校长,视频内容主要集中在技术与实际业务的结合点上,互联网行业从业10年,Java技术专家。
|
目錄:
|
第1章 设计模式的原则与分类 1
1.1 本章要点 1
1.2 设计模式的原则 1
1.2.1 单一职责原则 1
1.2.2 接口隔离原则 4
1.2.3 里氏替换原则 6
1.2.4 依赖倒置原则 12
1.2.5 迪米特法则 13
1.2.6 开闭原则 16
1.3 设计模式的分类 19
1.3.1 创建型模式 19
1.3.2 结构型模式 19
1.3.3 行为型模式 20
1.4 合成复用原则 20
1.5 章节回顾 22
第2章 多种类第三方账号登录
—桥接模式与适配器模式 23
2.1 本章要点 23
2.2 初始化项目实战环境 24
2.2.1 创建SpringBoot项目并添加pom.xml依赖 24
2.2.2 application.properties配置 26
2.2.3 初始化传统注册、登录功能 27
2.2.4 项目验证 30
2.3 实战需求发布会 32
2.4 适配器模式实战—UML类结构分解及方法定义 35
2.5 适配器模式实战—第三方账号登录 39
2.5.1 第三方账号的登录原理 40
2.5.2 代码实战 44
2.5.3 验证第三方账号登录功能 47
2.6 桥接模式实战—UML类结构分解及方法定义 49
2.7 桥接模式实战—第三方账号登录 56
2.7.1 核心代码实战 56
2.7.2 修复代码瑕疵 58
2.7.3 Client调用端代码实战 64
2.7.4 功能测试 69
2.8 章节回顾 69
第3章 商品类目管理
—组合模式与访问者模式 71
3.1 本章要点 71
3.2 实战需求发布会 71
3.3 实战前的准备工作 74
3.3.1 项目集成Redis 74
3.3.2 初始化商品类目信息 77
3.4 组合模式实战—UML类结构分解及方法定义 79
3.5 组合模式实战—获取商品类目 84
3.6 访问者模式实战—UML类结构分解及方法定义 87
3.7 访问者模式实战—商品类目的增加与删除功能 91
3.7.1 功能开发实战 91
3.7.2 功能测试 94
3.8 章节回顾 95
第4章 商品订单状态转化与处理
—状态模式 观察者模式 命令模式 96
4.1 本章要点 96
4.2 实战需求发布会 98
4.3 状态模式实战—UML类结构分解及方法定义 99
4.4 状态模式实战—订单状态转化 105
4.4.1 订单状态转化 106
4.4.2 订单状态功能测试 111
4.5 观察者模式实战—UML类结构分解及方法定义 118
4.6 观察者模式实战—观察订单状态的变更处理 124
4.7 Spring状态机介绍及引入 128
4.8 状态模式实战—使用Spring状态机 130
4.8.1 枚举类及订单对象创建 131
4.8.2 Spring状态机配置类实战 133
4.9 观察者模式实战—基于Spring状态机 139
4.9.1 观察者类创建实战 139
4.9.2 测试基于Spring状态机的订单转化 143
4.10 命令模式实战—UML类结构分解及方法定义 147
4.11 命令模式实战—订单转化相关扩展操作 151
4.12 章节回顾 153
第5章 多种类第三方支付
—策略模式 门面模式 工厂模式 享元模式 154
5.1 本章要点 154
5.2 实战需求发布会 155
5.3 策略模式实战—UML类结构分解及方法定义 157
5.4 策略模式实战—多种类第三方支付 160
5.4.1 第三方支付原理 160
5.4.2 第三方支付接入流程 162
5.4.3 支付宝支付实战 169
5.5 门面模式实战—UML类结构分解及方法定义 174
5.6 门面模式实战—调用支付策略 175
5.7 工厂模式实战—UML类结构分解及方法定义 177
5.8 工厂模式实战—策略工厂 180
5.9 测试多种类第三方支付 184
5.10 享元模式实战 188
5.10.1 隐藏的享元模式 188
5.10.2 享元模式的定义及UML类图分解 189
5.10.3 Spring IOC对享元模式的应用 191
5.11 章节回顾 193
第6章 业务投放
—责任链模式 194
6.1 本章要点 194
6.2 实战需求发布会 195
6.3 安装Apollo配置中心及相关数据准备 197
6.3.1 Apollo配置中心介绍 197
6.3.2 Windows环境部署Apollo配置中心 199
6.3.3 准备业务投放数据和用户数据 205
6.4 责任链模式实战—UML类结构分解及方法定义 208
6.5 责任链模式实战—业务投放 211
6.5.1 项目集成Apollo 211
6.5.2 业务投放实战 212
6.5.3 业务投放测试 218
6.6 章节回顾 219
第7章 平台积分更新及红包发放
—装饰器模式 220
7.1 本章要点 220
7.2 实战需求发布会(三层服务降级策略) 220
7.3 项目集成RabbitMq—服务降级之延迟服务 222
7.3.1 延迟队列的实现方式 222
7.3.2 RabbitMq的安装与队列配置 224
7.3.3 SpringBoot集成RabbitMq 227
7.4 装饰器模式实战—UML类结构分解及方法定义 228
7.5 装饰器模式实战—积分更新及红包发放 235
7.5.1 Apollo配置添加和测试数据准备 235
7.5.2 三层服务降级—积分更新及红包发放实战 238
7.6 章节回顾 241
第8章 开具电子发票
—建造者模式 原型模式 代理模式 242
8.1 本章要点 242
8.2 实战需求发布会 243
8.3 建造者模式实战—UML类结构分解及方法定义 244
8.4 建造者模式实战—开具电子发票 250
8.5 原型模式实战 252
8.5.1 原型模式实战—UML类结构分解及方法定义 252
8.5.2 引用拷贝、深拷贝与浅拷贝 255
8.6 代理模式实战 261
8.6.1 代理模式实战—UML类结构分解及方法定义 261
8.6.2 JDK动态代理和CGLIB动态代理 263
8.7 开具电子发票需求测试 268
8.8 章节回顾 269
第9章 朋友代付
—中介者模式 270
9.1 本章要点 270
9.2 实战需求发布会 271
9.3 中介者模式实战—UML类结构分解及方法定义 272
9.4 中介者模式实战—朋友代付 277
9.4.1 朋友代付实战 277
9.4.2 全局唯一中介者 279
9.5 章节回顾 282
第10章 订单审计日志设计
—模板方法模式 283
10.1 本章要点 283
10.2 实战需求发布会 283
10.3 模板方法模式实战—UML类结构分解及方法定义 284
10.4 模板方法模式实战—订单审计日志 289
10.5 章节回顾 290
第11章 ES日志查询
—迭代器模式 291
11.1 本章要点 291
11.2 实战需求发布会 292
11.3 Elastic Search SQL Rest API机制介绍 293
11.4 ES Mock Server 296
11.5 迭代器模式实战 298
11.5.1 UML类结构分解、方法定义及ES查询实战 298
11.5.2 实战测试 302
11.6 章节回顾 304
第12章 结语 305
|
內容試閱:
|
致敬所有程序员
我们生而平凡,却因思维和双手而闪亮。人有居庙堂,人有守边疆,或许没
有聚光灯下的万众瞩目,没有绝伦逸群的青史留名,但总有那一隅角落,有我们
挥洒汗水和青春的字里行间,千家灯朦胧,万里夜长空,致敬最美夜行者。
然,人间没有永恒的夜晚,世界没有永恒的冬天,程序改变世界。
定,春风和煦,韵律协调,击壤而歌,同忧同行,为太平故,负重前行,为
静好故。
终,世界以你为荣。
益者三友,损者三友。友道,友谅,友多闻,益矣。友便辟,友善柔,友便
佞,损矣。
愿,君以书为友,日以数篇为率,书遂大进。
盼,平生于书,未尝苟且,或达人简札,少不当意,必再三易之不厌。
遂,愈老而愈益精妙。
士有诤友,则身不离于令名。
期,君视吾为诤友,交友投分,切磨箴规,同心而共济,始终如一。
虽,不可即高山流水,仍盼鼓琴以为众善听,为君子交,淡以亲,相知无远
近,万里尚为邻。
终,达之所成亦不离道。
谨以此书,致敬所有程序员,致敬那无数黑夜中的呜咽与怒吼,致敬最卑微
的程序梦,致自己,致青春—You look great today!
学习设计模式普遍存在的问题
以下是来自众多从业者对设计模式的看法和疑问。
●设计模式真的有用吗?你敢不敢告诉我你项目里用了什么设计模式?
●看设计模式有什么用?天天造车工厂、肯德基点餐、披萨制作…… 哎!
贯穿设计模式
IV
——用一个电商项目详解设计模式
●除了工厂和单例,兄弟们有没有真实用过其他设计模式的?
●可能只有做架构代码的时候才会用设计模式吧,就像Spring源码那样用
了不少设计模式,自己写的项目里感觉没什么可以用的点。
●可能面试官也没在项目里用过几个,就是随便问问(偷笑)。
……
上边所列举的点是否也正是你的内心想法呢?设计模式给大部分读者的感觉
就是“神秘”“高端”“不接地气”“学会容易落地难”。好不容易有几个能够
落地到项目中的设计模式,还被框架代码完美封装了。比如:
●Spring的Bean管理:在不显示使用Scope注解为prototype的前提下,默
认情况就是使用的单例Bean,想自己写单例,Spring不给你机会。
●迭代器模式:JDK中List源码也好,Map源码也好,这些常用的数据结构
都为我们提供了迭代器—iterator,想自己写迭代器,要先过JDK这关。
●观察者模式:很多事件的监听场景适合使用该设计模式,可无奈的是
Redis提供了发布/订阅功能;Spring框架提供了Listener注解;更多
情况下,项目中要完成事件消息的传递,必然会引入消息中间件,如
RabbitMq、Kafka;使用Spring Cloud Alibaba的企业,更多地会使用
RocketMq进行事件消息的传递,一个监听场景被轻易地修改为了以中间
件为基础的消息传递和消息接收,而且耦合度还降低了。叹息自己一身
武艺,却无用武之地。
……
难道这辈子自己只能写工厂设计模式了吗?还是简单工厂模式……
内容简介
●不切实际的代码示例(如造车工厂、肯德基点餐、披萨制作、适配USB
接口、装饰咖啡加牛奶糖等)请绕行。
●不切实际的设计模式原则描述(如老师、学生单一职责原则划分,驾驶
不同品牌车辆的依赖倒置原则设计等)请绕行。
很抱歉以这种形式进行本书内容简介的开场,也希望广大读者给予谅解。笔
者认为,如果依然以如此虚幻的示例展开对设计模式的讲解,那么本书也就失去
了它原有的意义。因为在网络开放的当下,很多免费的博客论坛中,这种设计模
式的代码示例比比皆是,我们何必浪费金钱和时间在这本书上?而我们作为开发
行业的从业者,迫切需要的并不是虚无缥缈,而是真正可以落地的设计模式。
本书所有设计模式的代码编写,全部基于互联网项目核心需求,杜绝不切实
前言
V
际的代码示例,让设计模式融入真实的项目开发之中,让设计模式为我们的项目
效力。即便是第1章内容对设计模式六大原则(合成复用原则在1.4节单独说明)
的讲解,依然以热门源码(如JDK8源码、Spring5源码)为示例展开。
除第1章介绍设计模式的原则和分类,以及第12章进行结语以外,其他章
节依次以互联网项目核心模块为基准,将设计模式融入核心模块的开发之中,整
个过程犹如一个整体项目需求,完成设计模式的融入。
从第2章到第11章,依次对核心项目模块进行设计模式的融入,本书所涉
及的核心模块如下。
●多种类第三方账号登录。
●商品类目管理。
●商品订单状态转化与处理。
●多种类第三方支付。
●业务投放。
●平台积分更新及红包发放。
●开具电子发票。
●朋友代付。
●订单审计日志设计。
●ES日志查询。
本书的目标是让设计模式在工作中的使用成为可能,让我们对设计模式的学
习不仅仅停留在表面上。希望本书对设计模式的实践和落地,能够引起读者共鸣,
能够为读者在未来的工作中提供些许参考。
如何学习本书
对于设计模式的初学者,笔者建议从第1章开始阅读,了解设计模式的原则及
分类,对设计模式有一个全局概念之后,再依次进行后续章节的学习。对于已经了
解设计模式的读者,可以根据自身情况跳过第1章的学习,直接从第2章进行学习。
除此之外,笔者对阅读本书的读者仍有以下建议:
①本书所涉及的所有代码示例,可以扫描书中的“全书源码”二维码获取。
但建议读者不要提前获取全部代码,而是跟随章节的内容亲自进行代码的编写,
体会设计模式的精妙之处。
②本书涉及的相关第三方组件的安装包及安装方式,如RabbitMq、Apollo等,
均可扫描前言中的配套二维码获取。同时,为了感谢读者的支持和认可,本书赠
送“Spring源码视频资料”,由笔者亲自录制,依然在前言中通过二维码处获取。
贯穿设计模式
——用一个电商项目详解设计模式
③希望广大读者理解,一个项目需求可以有多种代码实现方式,或简单,或
复杂,或单一直接,或可扩展。实现方式的恰当与否,完全视业务场景以及对代
码的封装性、扩展性、可维护性等一系列要求而定。本书的内容只是多种实现方
式中的一种,欢迎读者能够将自己的想法传达给我,我们互相讨论,共同进步。
④本书与传统的设计模式讲解顺序有所不同,传统的讲解顺序会按照设计模
式的三大类型(创建型、结构型、行为型)进行讲解,而本书以互联网项目需求
为核心展开设计模式讲解,与传统的讲解方式大相径庭,希望读者能够调整学习
思路和方式。
接下来让我们开启这次旅程吧,一起进步,加油!
书友技术群
笔者为广大书友创建了QQ书友技术群,我们不仅可以讨论本书涉及的技术
内容,还可以讨论行业内任何有价值的技术,共同创建一个良好的技术交流环境。
笔者也会经常在群中为大家分享更多的学习资料,并进行技术交流。请扫描下方
二维码入群。
本书提供了详细的配套资料,读者可以扫描下方的二维码进行下载。
全书源码
书友群二维码
[第6章] Apollo quick start
Spring源码视频资料
[第6章] MySQL 5.6.10安装包
[第7章] rabbit.queue.create-
0.0.1-SNAPSHOT
[第11章] es.demo.server-
0.0.1-SNAPSHOT
[第7章] RabbitMq安装包
|
|