网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 悟道领域驱动设计 |
分类 | 教育考试-考试-计算机类 |
作者 | 覃玉杰 |
出版社 | 电子工业出版社 |
下载 | |
简介 | 内容推荐 本书系统介绍领域驱动设计的理论知识与实践方法,不仅讲解领域驱动设计的战术设计(如实体、值对象、聚合、聚合根、领域服务、领域事件等)、战略设计(如限界上下文、上下文映射、子域等)、领域建模等理论知识,还探讨领域驱动设计的应用架构、类型变化链、一致性、CQRS、事件溯源、编码指南、架构可视化(基于C4模型)等工程实践,探索如何将领域驱动设计与当前业界流行的开发方法(如低代码、敏捷开发、测试驱动开发等)融合,使领域驱动设计成为真正可落地的开发方法。本书在介绍概念时,为概念提供了代码层面的讲解,这样可以极大地降低读者对概念的理解门槛。此外,书中还提供两个热门领域的项目案例――开发视频直播服务和AIGC产品,帮助读者理解、掌握、应用领域驱动设计。 目录 第1 章 领域驱动设计预热 / 1 1.1 初步理解领域驱动设计 / 1 1.1.1 领域驱动设计的简史 / 1 1.1.2 领域驱动设计的基本内容 / 1 1.1.3 领域驱动设计的意义 / 3 1.1.4 领域驱动设计的困境 / 5 1.2 如何学习领域驱动设计 / 6 1.2.1 学习难点 / 6 1.2.2 学习路线 / 6 1.3 领域驱动设计常见争议探讨 / 8 1.3.1 领域驱动设计的适用范围 / 8 1.3.2 贫血模型与充血模型的选择 / 10 1.3.3 领域驱动设计落地的认知差异 / 10 1.3.4 领域驱动设计的技术选型 / 11 1.3.5 领域驱动设计与面向对象编程 / 12 1.3.6 不要过度迷信领域驱动设计 / 13 第2 章 应用架构 / 14 2.1 贫血模型和充血模型 / 14 2.1.1 对象的属性和行为 / 14 2.1.2 贫血模型 / 14 2.1.3 充血模型 / 15 2.1.4 领域驱动设计对模型的要求 / 15 2.2 经典贫血三层架构 / 16 2.2.1 解读贫血三层架构 / 16 2.2.2 贫血三层架构的优点 / 17 2.2.3 贫血三层架构的问题 / 17 2.3 DDD 常见的应用架构 / 18 2.3.1 经典的四层架构 / 18 2.3.2 端口和适配器架构 / 19 2.4 应用架构演化 / 22 2.4.1 合并数据模型 / 22 2.4.2 抽取领域模型 / 22 2.4.3 维护领域对象生命周期 / 24 2.4.4 泛化抽象 / 26 2.4.5 完整的项目结构 / 28 2.5 领域对象的生命周期 / 29 2.5.1 领域对象的生命周期介绍 / 29 2.5.2 领域对象的创建过程 / 29 2.5.3 领域对象的保存过程 / 31 2.5.4 领域对象的重建过程 / 31 2.5.5 领域对象的归档过程 / 33 2.6 应用架构的类型变化链 / 33 2.6.1 应用架构各层的对象类型 / 33 2.6.2 查询过程的类型变化 / 36 2.6.3 创建过程的类型转换 / 40 2.6.4 修改过程的类型转换 / 43 第3 章 实体和值对象 / 45 3.1 实体 / 45 3.1.1 实体的概念 / 45 3.1.2 实体的建模 / 45 3.1.3 实体的创建 / 48 3.1.4 实体的重建 / 48 3.2 值对象 / 49 3.2.1 值对象的概念 / 49 3.2.2 值对象的实现 / 49 3.2.3 值对象的建模 / 50 3.2.4 无副作用的值对象方法 / 51 3.2.5 值对象的创建 / 52 3.2.6 Domain Primitive / 53 3.3 无副作用函数 / 54 3.3.1 无副作用函数的定义 / 54 3.3.2 无副作用函数的实现 / 56 第4 章 聚合与聚合根 / 57 4.1 领域模型相关概念梳理 / 57 4.2 聚合与聚合根的定义 / 58 4.3 聚合与聚合根的作用 / 59 4.4 聚合设计的原则 / 62 4.4.1 设计小而全的聚合 / 62 4.4.2 通过专享标识引用其他聚合根 / 62 4.4.3 一个事务只更新单个聚合 / 63 4.4.4 跨聚合采用最终一致性 / 64 4.5 聚合的拆分 / 64 4.5.1 第一次拆分 / 65 4.5.2 第二次拆分 / 65 4.6 聚合根的配套组件 / 66 第5 章 Factory、Repository 和领域服务 / 67 5.1 Factory / 67 5.1.1 Factory 的定义 / 67 5.1.2 Factory 的实现 / 67 5.1.3 Factory 的职责辨析 / 68 5.2 Repository / 68 5.2.1 Repository 的定义 / 68 5.2.2 Repository 的实现 / 68 5.2.3 Repository 实战 / 69 5.3 领域服务 / 79 5.3.1 领域服务的基本概念 / 79 5.3.2 领域服务的特点 / 80 5.3.3 领域服务实战 / 80 5.3.4 领域服务与应用服务的区别 / 81 第6 章 设计模式 / 82 6.1 设计模式与领域驱动设计 / 82 6.2 责任链模式 / 82 6.2.1 责任链模式的定义 / 82 6.2.2 责任链的案例代码 / 83 6.2.3 责任链框架?模式 / 89 6.2.4 在领域驱动设计中使用责任链 6.3 策略模式 / 90 6.3.1 策略模式的定义 / 90 6.3.2 策略模式的案例代码 / 91 6.3.3 在领域驱动设计中使用策略 模式 / 92 6.4 桥接模式 / 96 6.4.1 桥接模式的定义 / 96 6.4.2 桥接模式的案例代码 / 97 6.4.3 在领域驱动设计中使用桥接 模式 / 100 6.5 规约模式 / 106 6.5.1 规约模式的定义 / 106 6.5.2 规约模式的应用场景 / 107 6.5.3 规约模式的案例代码 / 107 6.5.4 在领域驱动设计中使用规约模式 / 111 6.5.5 规约模式的使用误区 / 112 第7 章 防腐层 / 113 7.1 防腐层的概念理解 / 113 7.2 防腐层的实现方案 / 115 7.2.1 适配器模式的定义 / 115 7.2.2 适配器模式的实现 / 116 7.2.3 使用适配器模式实现防腐层 / 118 7.3 防腐层的实现要点总结 / 121 7.3.1 封装技术细节 / 121 7.3.2 尽量简单且稳定 / 121 7.3.3 入参和出参为本地上下文值对象或基本数据类型 / 122 7.3.4 将外部异常转为本地异常 / 122 7.3.5 将外部错误码转为本地异常 / 123 7.3.6 按需返回 / 123 7.3.7 不在实体和值对象中调用防腐层 / 124 第8 章 领域事件 / 126 8.1 幂等设计 / 126 8.1.1 幂等设计的定义 / 126 8.1.2 写操作的幂等性 / 126 8.1.3 幂等设计的实现方案 / 127 8.2 领域事件建模 / 130 8.2.1 领域事件的概念 / 130 8.2.2 领域事件的应用 / 131 8.2.3 领域事件的消息体 / 131 8.2.4 领域事件的建模实现 / 132 8.3 领域事件生成 / 132 8.3.1 应用层创建领域事件 / 133 8.3.2 聚合根创建领域事件 / 134 8.3.3 领域事件生成总结 / 137 8.4 领域事件发布 / 137 8.4.1 事件存储 / 137 8.4.2 可靠地发布领域事件 / 139 8.5 领域事件订阅 / 142 8.5.1 应用层 / 142 8.5.2 领域事件订阅者案例代码 / 143 第9 章 CQRS / 144 9.1 引入CQRS 的契机 / 144 9.2 CQRS 概念理解 / 145 9.3 CQRS 中的对象命名 / 146 9.4 实现CQRS / 147 9.4.1 方法级的CQRS / 147 9.4.2 相同数据源的CQRS / 148 9.4.3 异构数据源的CQRS / 151 9.5 CQRS 的优缺点 / 153 9.5.1 CQRS 的优点 / 153 9.5.2 CQRS 的缺点 / 154 第10 章 事件溯源 / 155 10.1 事件溯源概念理解 / 155 10.2 第一种事件溯源实现方案 / 157 10.2.1 整体方案介绍 / 157 10.2.2 组件调整总结 / 164 10.2.3 案例运行展示 / 167 10.3 第二种事件溯源实现方案 / 170 10.3.1 整体方案介绍 / 170 10.3.2 组件调整总结 / 172 10.3.3 案例运行展示 / 175 10.4 第三种事件溯源实现方案 / 177 10.4.1 拉链表介绍 / 177 10.4.2 整体方案介绍 / 178 10.4.3 组件调整总结 / 182 10.4.4 案例运行展示 / 182 第11 章 一致性 / 185 11.1 聚合内事务实现 / 185 11.1.1 聚合内事务的实现误区 / 185 11.1.2 聚合内事务的实现思路 / 186 11.1.3 乐观锁 / 187 11.1.4 数据库读写的性能思考 / 192 11.2 跨聚合事务实现 / 193 11.2.1 跨聚合事务的实现思路 / 193 11.2.2 二阶段提交 / 193 11.2.3 本地消息表 / 197 11.2.4 优选努力通知 / 197 11.2.5 TCC 事务方案 / 198 11.2.6 Saga 事务方案 / 207 11.2.7 跨聚合事务的方案总结 / 219 第12 章 战略设计 / 220 12.1 战略设计概述 / 220 12.1.1 战略设计的概念 / 220 12.1.2 战略设计的误区 / 221 12.2 通用语言 / 221 12.2.1 通用语言的概念 / 221 12.2.2 通用语言的构建 / 222 12.2.3 通用语言的维护 / 222 12.3 限界上下文 / 223 12.3.1 限界上下文的定义 / 223 12.3.2 上下文划分依据 / 223 12.3.3 划分限界上下文的实践经验 / 224 12.4 上下文映射 / 224 12.4.1 上下文映射的概念 / 224 12.4.2 上下文映射的类型 / 225 12.5 子域 / 227 12.5.1 子域的定义 / 227 12.5.2 子域的类型 / 227 12.5.3 子域划分 / 229 12.5.4 子域的演化 / 231 12.5.5 子域思想的应用 / 233 第13 章 领域建模 / 237 13.1 领域建模的基本理解 / 237 13.2 事件风暴法介绍 / 237 13.2.1 建模前准备 / 237 13.2.2 核心概念 / 238 13.2.3 建模过程 / 240 13.3 事件风暴法建模案例实战 / 244 13.3.1 案例描述 / 244 13.3.2 案例建模过程 / 245 第14 章 研发效能 / 252 14.1 脚手架 / 252 14.1.1 Maven Archetype 介绍 / 252 14.1.2 ddd-archetype 的使用 / 253 14.2 编码效率提升 / 260 14.2.1 DDD 编码效率遇到的困境 / 260 14.2.2 Graceful Repsonse / 260 14.2.3 代码生成器 / 266 14.2.4 对象转换工具 / 267 14.3 代码静态分析工具 / 268 14.3.1 SpotBugs / 269 14.3.2 PMD / 271 14.3.3 CheckStyle / 272 14.3.4 SonarLint / 272 14.4 低代码 / 274 14.4.1 低代码介绍 / 274 14.4.2 低代码平台核心流程 / 274 14.4.3 低代码核心技术 / 275 14.4.4 低代码反思 / 278 14.5 持续集成/ 持续交付 / 281 14.5.1 概念理解 / 281 14.5.2 实现方案 / 282 14.5.3 持续集成与领域驱动设计 / 282 第15 章 测试驱动开发 / 283 15.1 TDD 基本理解 / 283 15.2 TDD 常见的误区 / 284 15.3 TDD 技术选型 / 286 15.4 TDD 案例实战 / 287 15.4.1 奇怪的计算器 / 287 15.4.2 贫血模型三层架构的TDD 实战 / 297 15.4.3 DDD 下的TDD 实战 / 304 第16 章 敏捷开发 / 309 16.1 敏捷开发介绍 / 309 16.1.1 敏捷开发价值观 / 309 16.1.2 敏捷开发十二个原则 / 310 16.2 敏捷开发常用实践方法 / 312 16.2.1 Scrum / 312 16.2.2 看板 / 314 16.2.3 极限编程 / 315 16.3 DDD+ 敏捷开发 / 318 16.3.1 以通用语言作为互动的基础 / 318 16.3.2 从最小可行产品开始迭代 / 319 16.3.3 简化文档 / 319 16.3.4 使用子域的思想指导确定需求 优先级 / 319 16.3.5 持续反馈和改进 / 319 第17 章 架构可视化 / 320 17.1 架构可视化与C4 模型 / 320 17.1.1 系统上下文图 / 322 17.1.2 容器图 / 323 17.1.3 组件图 / 324 17.1.4 代码图 / 325 17.1.5 系统全景图 / 325 17.1.6 动态图 / 326 17.1.7 部署图 / 327 17.2 C4 模型规范和review checklist / 329 17.2.1 C4 模型规范 / 329 17.2.2 review checklist / 329 17.3 使用文本绘制C4 架构图 / 329 17.3.1 文本绘图工具选型 / 329 17.3.2 VS Code 下C4-PlantUML 的 安装 / 330 17.3.3 IntelliJ Idea 下C4-PlantUML 的 安装 / 332 17.3.4 案例实战及C4-PlantUML 语法 介绍 / 332 17.4 使用绘图工具绘制C4 架构图 / 338 17.4.1 绘图工具的选择 / 338 17.4.2 架构图绘制实战 / 338 17.4.3 架构图绘制心得 / 342 第18 章 使用DDD 进行系统重构 / 343 18.1 系统重构的基本了解 / 343 18.2 系统重构的模式 / 343 18.2.1 修缮者模式 / 344 18.2.2 绞杀者模式 / 345 18.2.3 推翻重建模式 / 345 18.3 系统重构的基本流程 / 346 18.3.1 启动 / 346 18.3.2 规划 / 349 18.3.3 执行 / 351 18.3.4 监控 / 356 18.3.5 收尾 / 357 第19 章 布道领域驱动设计 / 358 19.1 为团队引入领域驱动设计 / 358 19.2 编码指南 / 360 19.2.1 核心概念 / 360 19.2.2 应用架构 / 361 19.2.3 事务控制 / 364 19.2.4 研发效率 / 364 19.2.5 代码质量 / 364 19.2.6 过程文档 / 364 19.3 能力成熟度模型 / 365 19.3.1 软件能力成熟度模型 / 365 19.3.2 领域驱动设计能力成熟度模型 / 365 第20 章 使用DDD 开发视频直播服务 / 367 20.1 视频直播技术介绍 / 367 20.2 视频直播服务案例介绍 / 368 20.2.1 案例背景 / 368 20.2.2 核心业务逻辑 / 369 20.2.3 技术选型 / 369 20.3 使用DDD 实现视频直播服务 / 370 20.3.1 领域建模 / 370 20.3.2 系统架构 / 371 20.3.3 代码工程初始化 / 372 20.3.4 CQRS / 372 20.3.5 ACL / 374 20.3.6 Graceful Response / 374 20.3.7 接口自动化测试 / 376 20.4 案例运行截图 / 377 20.4.1 直播间管理 / 377 20.4.2 主播管理 / 377 20.4.3 直播管理 / 378 第21 章 使用DDD 开发AIGC产品 / 382 21.1 AIGC 与DDD / 382 21.2 AIGC 案例介绍 / 382 21.2.1 案例背景 / 383 21.2.2 核心业务逻辑 / 383 21.2.3 系统架构 / 385 21.2.4 技术选型 / 385 21.3 DDD 开发AIGC 产品 / 385 21.3.1 领域建模 / 386 21.3.2 代码工程初始化 / 387 21.3.3 CQRS / 387 21.3.4 领域服务 / 388 21.3.5 ACL / 390 21.3.6 Graceful Response / 391 21.3.7 接口自动化测试 / 391 21.4 案例运行截图 / 393 21.4.1 创建日记接口 / 393 21.4.2 创建贴纸接口 / 394 21.4.3 根据贴纸生成日记正文接口 / 395 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。