展开全部

主编推荐语

30年行业实践沉淀,助力读者原著学习,更快打开DDD之门。

内容简介

《复杂软件设计之道:领域驱动设计全面解析与实战》同时引入了DDD的新发展成果,如事件风暴建模,并以此建模方式替代传统的DDD建模方式讲解了多个案例。还涉及大量软件系统实现相关的技术和架构,读者在学习DDD的同时,也可以掌握这些技术、架构在DDD实现中的灵活应用。

另外,每个概念或方法的讲解过程都穿插了具体实例,以方便读者结合实例进行学习;第2~7章每章后都有总结与拓展,将本章涉及的案例和知识进行总结,并引入国际DDD专家的心得经验,试图告诉读者一条DDD实战中行之有效的途径。

《复杂软件设计之道:领域驱动设计全面解析与实战》主要面向拥有一定实践经验的软件产品经理、领域专家、软件设计开发相关从业人员,相关初级从业者也可阅读本书。

目录

  • 版权信息
  • 前言
  • 为什么写这本书
  • 这本书写给谁
  • 如何阅读本书
  • 本书主要内容
  • 致谢
  • 第1章 领域驱动设计基础
  • 1.1 领域驱动设计的起源与发展
  • 1.1.1 程序员为难之处
  • 1.1.2 技术负债与软件质量
  • 1.1.3 ER数据建模与面向对象建模
  • 1.1.4 DDD的诞生和发展
  • 1.2 领域驱动设计的特点
  • 1.2.1 发现和理解问题
  • 1.2.2 领域即边界
  • 1.2.3 解决复杂性
  • 1.2.4 新的数据结构设计方式
  • 1.2.5 需要注重产品的程序员
  • 1.3 领域驱动设计的难点
  • 1.3.1 业务策略和业务规则
  • 1.3.2 统一语言与有界上下文
  • 1.3.3 领域模型的提炼
  • 1.4 领域驱动设计的应用场景
  • 1.4.1 哪些应用不适合?
  • 1.4.2 适合微服务架构
  • 第2章 领域驱动战略设计
  • 2.1 有界上下文
  • 2.1.1 统一语言:统一项目中的交流语言
  • 2.1.2 如何发现有界上下文和统一语言?
  • 2.1.3 有界上下文之间的关系
  • 2.1.4 核心子域、支持子域与通用子域
  • 2.1.5 实例解析:电费结算系统
  • 2.2 按时间线发现有界上下文
  • 2.2.1 UML时序图
  • 2.2.2 实例解析:电商领域之商品管理上下文
  • 2.3 通过领域故事或流程发现有界上下文
  • 2.4 通过事件风暴会议发现有界上下文
  • 2.4.1 领域事件
  • 2.4.2 命令
  • 2.4.3 事件风暴建模法
  • 2.4.4 实例解析:一个典型的事件风暴建模议程
  • 2.5 业务平台与中台设计
  • 2.6 总结与拓展
  • 第3章 聚合设计
  • 3.1 聚合设计的概念
  • 3.1.1 高聚合低关联
  • 3.1.2 聚合的逻辑一致性
  • 3.2 设计聚合的几种方法
  • 3.2.1 改变主谓宾顺序
  • 3.2.2 根据领域事件设计聚合
  • 3.2.3 根据单一职责设计聚合
  • 3.2.4 按时间边界设计聚合
  • 3.2.5 通过事务边界设计聚合
  • 3.2.6 通过ER模型设计聚合
  • 3.3 实例解析:订单系统中的聚合设计
  • 3.3.1 信息拥有者模式
  • 3.3.2 引用模式
  • 3.3.3 奥卡姆剃刀原理
  • 3.3.4 控制者模式
  • 3.3.5 订单状态集中控制实现
  • 3.3.6 做什么和怎么做的分离
  • 3.3.7 在服务中验证聚合
  • 3.3.8 Spring Boot实现
  • 3.4 总结与拓展
  • 第4章 实体和值对象
  • 4.1 失血/贫血模型
  • 4.2 实体
  • 4.2.1 实体的标识
  • 4.2.2 实体的设计
  • 4.2.3 实体对象的创建
  • 4.3 值对象
  • 4.3.1 值对象与实体的区别
  • 4.3.2 用值对象重构
  • 4.4 领域服务
  • 4.4.1 领域服务的特征
  • 4.4.2 领域服务与应用服务
  • 4.5 仓储
  • 4.5.1 自行实现仓储
  • 4.5.2 结合Builder模式实现仓储
  • 4.6 充血模型的设计原则
  • 4.6.1 将公有setter方法变为私有
  • 4.6.2 注重对象的构建
  • 4.7 实例解析:论坛系统实体和值对象设计
  • 4.7.1 聚合根实体是什么?
  • 4.7.2 值对象的设计
  • 4.7.3 状态设计
  • 4.7.4 发帖功能实现
  • 4.7.5 双聚合根
  • 4.7.6 分配职责行为
  • 4.7.7 构建对象必须遵循唯一性
  • 4.8 总结与拓展
  • 第5章 CQRS架构
  • 5.1 DDD架构介绍
  • 5.1.1 MVC模式
  • 5.1.2 传统三层架构
  • 5.1.3 传统DDD分层架构
  • 5.1.4 清洁架构
  • 5.1.5 六边形架构
  • 5.1.6 垂直切片架构
  • 5.2 CQRS架构的特点
  • 5.3 命令和查询分离
  • 5.3.1 查询模型实现
  • 5.3.2 命令模型实现
  • 5.3.3 Command对象
  • 5.3.4 命令和查询的协作
  • 5.4 不同的数据访问方式
  • 5.4.1 查询端存储实现
  • 5.4.2 规格模式
  • 5.4.3 命令与查询的同步
  • 5.5 CAP定理
  • 5.6 领域事件实现数据同步
  • 5.7 实例解析:使用Axon框架实现CQRS
  • 5.7.1 命令端实现
  • 5.7.2 查询端实现
  • 5.8 总结与拓展
  • 第6章 事件溯源
  • 6.1 什么是事件溯源?
  • 6.2 基于事件溯源的聚合根设计
  • 6.2.1 用事件替代状态
  • 6.2.2 活动与事件
  • 6.3 事件溯源的优点
  • 6.3.1 替代分布式事务
  • 6.3.2 事件日志的顺序性
  • 6.3.3 基于事件日志的消息系统
  • 6.4 微服务中的分布式事务实现
  • 6.4.1 引入Saga模式
  • 6.4.2 Saga分布式事务原理
  • 6.4.3 实例解析:账户转账
  • 6.5 使用Apache Kafka实现事件溯源
  • 6.6 投射模式
  • 6.7 更改数据捕获(CDC)
  • 6.8 总结与拓展
  • 第7章 货物运输系统
  • 7.1 领域描述
  • 项目背景
  • 7.2 从流程中发现领域事件
  • 受理流程说明
  • 作业流程说明
  • 7.2.1 受理流程
  • 7.2.2 作业流程
  • 7.3 概念挖掘
  • 7.3.1 划分有界上下文
  • 7.3.2 预订受理上下文
  • 7.3.3 运输作业上下文
  • 7.4 预订受理的聚合设计
  • 7.4.1 聚合的发现和命名
  • 7.4.2 聚合设计
  • 7.4.3 状态设计
  • 7.4.4 命令与事件设计
  • 7.4.5 代码实现
  • 7.4.6 设计和实现的差异
  • 7.5 运输作业的聚合设计
  • 7.5.1 命令、事件和聚合
  • 7.5.2 有界上下文映射
  • 7.5.3 聚合重构设计
  • 7.6 总结与拓展
展开全部

评分及书评

3.8
4个评分
  • 用户头像
    给这本书评了
    4.0

    看了一遍,有收获。如果有开发背景,看起来收获应该更大。值得一读,推荐

      转发
      评论
      用户头像
      给这本书评了
      4.0

      本书有些章节描述有些啰嗦,重复,推荐指数 4 颗星

        转发
        评论

      出版方

      机械工业出版社

      机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。