猜你喜欢
贯穿设计模式——用一个电商项目详解设计模式

贯穿设计模式——用一个电商项目详解设计模式

书籍作者:伟山育琪 ISBN:9787302643364
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:1539
创建日期:2024-04-20 发布日期:2024-04-20
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以互联网项目核心模块为基准,将设计模式融入核心模块的开发之中,整个过程犹如一个整体项目需求,完成设计模式的融入。从第2章到第12章,依次对核心项目模块进行设计模式的融入,本书所涉及到的核心模块依次为:多种第三方账号登录;产品分类目录管理;商品查询;多种类支付;商品订单状态变化;订单完成后的业务投放及策略实时变更;开具增值税发票;商品代付;积分、平台币、红包发放;多种类日志设计;日志解析。

作者简介

B站技术博主河北王校长,视频内容主要集中在技术与实际业务的结合点上,互联网行业从业10年,Java技术专家。

编辑推荐

本书完全将设计模式和实战结合,将一个完整的电商项目核心模块融入书中,同时还有Apollo配置中心、Spring状态机等核心组件代码的讲解。

前言

前言


致敬所有程序员


我们生而平凡,却因思维和双手而闪亮。人有居庙堂,人有守边疆,或许没

有聚光灯下的万众瞩目,没有绝伦逸群的青史留名,但总有那一隅角落,有我们

挥洒汗水和青春的字里行间,千家灯朦胧,万里夜长空,致敬最美夜行者。


然,人间没有永恒的夜晚,世界没有永恒的冬天,程序改变世界。


定,春风和煦,韵律协调,击壤而歌,同忧同行,为太平故,负重前行,为

静好故。


终,世界以你为荣。


益者三友,损者三友。友道,友谅,友多闻,益矣。友便辟,友善柔,友便

佞,损矣。


愿,君以书为友,日以数篇为率,书遂大进。


盼,平生于书,未尝苟且,或达人简札,少不当意,必再三易之不厌。


遂,愈老而愈益精妙。


士有诤友,则身不离于令名。


期,君视吾为诤友,交友投分,切磨箴规,同心而共济,始终如一。


虽,不可即高山流水,仍盼鼓琴以为众善听,为君子交,淡以亲,相知无远

近,万里尚为邻。


终,达之所成亦不离道。


谨以此书,致敬所有程序员,致敬那无数黑夜中的呜咽与怒吼,致敬最卑微

的程序梦,致自己,致青春—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安装包





产品特色