![]()
内容推荐 本书以实战理念为主旨,对领域驱动设计的核心内容进行了全面解读。书籍主要由两部分内容构成:战略与战术。第一部分以子域和限界为核心,并通过案例的形式介绍了如何在现实中将其进行实践的知识;第二部分则围绕应用架构、聚合、实体、值对象、领域服务等概念展开讲解,重点描述了它们在应用中所充当的角色以及使用限制。除此之外,作者也根据自身的经验对一些常见的设计理论或设计模式进行了概括和总结,如面向对象、工作单元、Saga分布式事务等。尽管书中案例使用了Java语言进行表达,但并不会影响到读者的阅读体验。 本书的受众群体为软件工程师、系统架构师、需求分析师或计算机相关专业的在校师生等。 目录 第一部分 沙场秋点兵———战略布局 第1章 柳暗花明———困境与修身 1.1 困境 1.1.1 DDD的野望与尴尬 1.1.2 何以解忧 1.2 山重水复 1.2.1 软件中的熵增 1.2.2 抑制熵增速率 1.3 修行 1.3.1 管理者的修行 1.3.2 软件工程师的修行 总结 第2章 比翼连枝———领域驱动设计与微服务 2.1 软件革命———微服务的兴起 2.2 更进一步———DDD的百尺竿头 2.3 差异 2.4 对微服务的反思 2.5 DDD与微服务的秦晋之好 2.5.1 业务中台的概念 2.5.2 助力服务划分 总结 第3章 战略划小———领域与子域 3.1 胸存丘壑 3.2 领域与子域 3.3 子域特性 3.3.1 分割领域 3.3.2 可变的 3.3.3 有界 3.3.4 可决策资源投入 3.3.5 业务高度内聚 3.4 解读子域 3.4.1 业务灵魂———核心域 3.4.2 业务基石———支撑域 3.4.3 复用之道———通用域 3.5 识别子域的手段与策略 3.5.1 子域设计第一步———业务识别 3.5.2 子域设计第二步———子域打标 3.5.3 子域设计第三步———子域精化 3.5.4 子域划分策略总结 总结 第4章 确定疆域———限界上下文(BoundedContext) 4.1 通用语言 4.1.1 通用语言的作用 4.1.2 通用语言的特性 4.1.3 通用语言的使用方式 4.2 限界上下文的内涵 4.2.1 限界 4.2.2 上下文 4.2.3 限界上下文与子域 4.3 限界上下文的特性 4.3.1 物理划分 4.3.2 根据子域推导 4.3.3 限定边界 4.3.4 承上启下 4.3.5 具备技术性 4.4 限界上下文中的元素 4.4.1 领域模型 4.4.2 用例控制能力 4.4.3 数据存取能力 4.4.4 表现能力 4.4.5 数据转换 4.4.6 部署能力 4.4.7 交互支撑能力 4.5 限界上下文的来源 4.5.1 基于子域 4.5.2 基于非功能性需求 4.6 案例 4.7 限界上下文的粒度与规模 4.8 限界上下文间的通信 4.8.1 限界上下文的集成方式 4.8.2 限界上下文映射案例 4.9 再谈隔离 4.10 限界上下文中的业务模型 4.10.1 软件建模 4.10.2 限界上下文与模型的集成 总结 第二部分 知行合一———战术实践 第5章 中流砥柱———系统架构(Architecture) 5.1 对象与服务 5.1.1 对象 5.1.2 服务 5.2 分层架构 5.2.1 经典三层架构 5.2.2 DDD四层架构 5.3 洋葱架构与六边形架构 5.3.1 认识洋葱架构 5.3.2 认识六边形架构 5.4 命令查询责任分离(CQRS) 5.4.1 认识CQRS 5.4.2 CQRS的实现 5.5 事件驱动架构(EDA) 5.5.1 认识EDA 5.5.2 EDA案例 5.5.3 EDA的特色 5.6 事件溯源(EventSourcing) 5.7 事务与数据一致性 5.8 代码结构 5.8.1 组织项目 5.8.2 服务中的代码模型 5.8.3 实践 总结 第6章 举世无双———实体(Entity) 6.1 认识实体 6.1.1 贫血模型与充血模型 6.1.2 实体的标识符 6.1.3 实体的比较 6.1.4 实体的特征 6.2 实体的行为 6.2.1 责任主体 6.2.2 知识掌握程度 6.2.3 是否可复用 6.2.4 是否需要多对象协作 6.2.5 基于高内聚、低耦合原则 6.3 实体的构造函数 6.3.1 保障对象完整与合法 6.3.2 优先使用工厂 6.3.3 包含定制构造函数 6.4 实体设计实践 6.4.1 设计约束 6.4.2 实体存取 6.5 额外的礼物———对象间的关系 6.5.1 类图的作用 6.5.2 类间的关系 6.5.3 类图的粒度 总结 第7章 股肱之臣———值对象(ValueObject) 7.1 认识值对象 7.1.1 值对象的含义及作用 7.1.2 值对象示例 7.1.3 值对象的作用范围 7.2 值对象的特征 7.2.1 无标识符 7.2.2 修饰某物 7.2.3 构成某物 7.2.4 概念整体 7.2.5 不可变 7.2.6 无副作用 7.3 值对象的构造 7.4 值对象的存取 7.4.1 附加到实体表 7.4.2 单列存储多值 7.4.3 单独表 7.5 值对象案例 7.5.1 商品及价格策略 7.5.2 商品与评论 7.5.3 订单与收货地址 7.5.4 账本与流水 7.5.5 角色与权限 7.6 额外的礼物———领域模型基础类库 7.6.1 领域模型基类 7.6.2 领域模型验证能力 总结 第8章 独立自主———聚合(Aggregate) 8.1 认识聚合 8.1.1 使用聚合的原因 8.1.2 聚合示例 8.2 聚合的规模 8.2.1 事务规模 8.2.2 业务一致性范围 8.2.3 通用语言参考 8.3 聚合的特征 8.3.1 形成工作单元 8.3.2 有唯一对外面 8.3.3 知识聚合 书评(媒体评论) 本书通过生动的案例和实用的指南,向读者展 示了如何在实践中进行DDD落地以创造出灵活的、可 维护的且具有良好可扩展性的软件系统。无论您是 刚入门的研发人员还是经验丰富的软件工程师,这 本书都可为您提供相应的指导,助您成为领域驱动 设计领域中驾轻就熟的技术专家。 ——亚信科技电信事业部总工程师兼OSS解决 方案部总经理 陈友行 DDD不仅是令人着迷的学问,也是解决复杂业 务问题的利器。本书作者通过简约但不简单的案例 向读者展示了如何将这一抽象性十足的方法理论应 用于实践当中,给大家以豁然开朗之感。 ——中电福富信息科技有限公司副总经理 林启 铵 本书作者以深厚的专业知识和丰富的实践经验 为根本,将复杂的技术概念转化为易于理解的思想 和语言,巧妙地将抽象的概念运用于具体的案例之 中,能够让读者快速领悟DDD的精华。书中的设计技 巧和建议,不仅能够帮助您快速掌握理论知识,还 能带领您解决实践中的技术挑战,加速技能的提升 和自身的成长。 ——广东亿迅科技有限公司总工程师 廖小文 |