【热点】领域驱动设计的下层设计

简介: 关注公众号“达摩院首座”,了解开发者最真实生活

不同于DDD的战略规划,战术规划更偏重于实施的细节,更聚焦于在单个有界上下文中的组件排布并且有各自通用的组件开发标准,在产品开发过程中可能会变更战术规划。

在上节课中,我们讲到了DDD的顶层设计包括了领域规划,各子域规划和域内的通用语言。作为单个子域的设计,有效的域模型是下层规划的关键。

1.png

因此下层规划也通常被称为模型驱动设计,与之密切相关的包括服务设计、实体设计、分层架构设计以及值对象。

2.png

一个子域就是一个服务,当然子域还可以包含多个微服务,这些微服务的设计是为了更好的理解子域内的业务逻辑。微服务的设计通常以分层的方式实现。比如金拱门的门店服务可以划分为接待层(负责记录客户订单和收银)、调度层(负责订单调度和队列管理)、业务层(负责准备食物)、持久化层(原始食材)。基于这样的分层式结构订单处理得会更加高效,每一层的权责明确,复用度高且可以独立扩展。
3.jpg
值对象是领域中不需要唯一标识的领域概念,通常在业务中,我们不需要区分对象是哪一个,而只关心对象是什么,这样的对象我们认为是值对象。如果两个对象所有状态都一样,我们就认为是同一个值对象,比如地址信息、订单状态信息等。值对象是只读的,具有不变性不能直接修改,但可以被替换。如果我们要修改一个客户的街道信息,应该是Customer.Address address=new Address(); address.Street=; 而不应该是Customer.Address.Street=;

下层设计中的实体对于熟悉数据库设计的开发人员来说一定不陌生,实体可以用唯一ID表示的,由一个或多个值对象组成,通常表现为数据库中的一行并由前端应用的业务逻辑进行增删改查。

实体通常是以集合(Aggregate)的表现形式呈现出来的,从业务角度讲我们不大会关注某一笔具体交易或某一个客户的消费行为,而会从全局角度剖析某类人群或某个区域的市场反应。因此对于客户或订单的关联系统,任何客户或订单的信息更新,都需要立即同步到其关联系统,才能使集合快速更新。
4.png
最后,工厂和仓库是用来生产集合的工具,工厂可以不断将实体制造成新的集合(通常由函数代码实现);仓库用来存放各种集合(通常由数据库物化视图实现)。仓库不单单是一个数据访问对象,而是存放部分实体数据并可以对其进行更新。

5.png

既然都聊得这么深入了,下集开始,小编会介绍DDD的具体实现。内容上也会加入一些代码段的部分以让开发人员也可以了解领域驱动设计的思想,下期见啦~

相关文章
|
10月前
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
269 0
|
设计模式 JSON 架构师
你真的需要防腐层吗?DDD 系统间的7种关系梳理与实践
当提到系统间交互的时候,人们都会想到大名鼎鼎的防腐层,用来防止其他系统的模型变更对本系统造成影响。但是在实践这个模式的过程中,我们常常会遇到问题。此时我们也应该考虑下其他的系统交互方式。
27177 12
你真的需要防腐层吗?DDD 系统间的7种关系梳理与实践
|
9月前
|
Java 持续交付 数据库
避免服务分层污水池反模式
【6月更文挑战第30天】本文介绍污水池反模式,分层架构在敏捷性、部署性和性能方面得分较低,但具有高测试性和易开发性。关键在于合理分层以降低耦合和提高解耦效果。
324 1
避免服务分层污水池反模式
|
8月前
业务架构问题之什么是自上而下和自下而上的设计方法
业务架构问题之什么是自上而下和自下而上的设计方法
231 18
|
设计模式 开发框架 数据库
业务层结构优化 | 学习笔记
简介:快速学习业务层结构优化
101 0
|
Java 数据库
架构视角-到底如何做好分层
在进行程序开发和设计时我们常常提到分层的概念,但是怎么样的分层才是好的分层呢,这篇谈谈在如何分层这个问题上的一些体会,和大家探讨一下
204 0
架构视角-到底如何做好分层
|
数据库连接 数据库
经典三层架构以及分层的原则
经典三层架构以及分层的原则
290 0
|
设计模式 架构师 Cloud Native
架构设计的本质
实际上架构只是系统设计里面的一个重要环节,除了架构还包含了商业诉求,业务建模,系统分析,系统设计等重要领域。本文尝试从更高视角重新审视架构设计的工作,把架构设计的上升到系统设计的立体空间去探索,最终勾勒出系统设计的全域知识体系。
14215 0
架构设计的本质
|
数据管理 Java 程序员
【热点】漫谈领域驱动设计
关注公众号“达摩院首座”,了解开发者最真实生活
293 0
【热点】漫谈领域驱动设计
|
资源调度 前端开发 安全
5G 逻辑架构的重构 | 带你读《5G时代的承载网》之十一
5G 的架构设计主要需要满足关键性能需求和网络运营需求,为便于理解 5G 架构设计的革新,本节将以现有 4G 的网络架构为基础,逐一分析现有架 构的局限性,对比 5G 新的性能需求和运营需求,对现有架构进行分解、重构, 逐步靠近 3GPP 确定的 5G 新架构。
5G 逻辑架构的重构   | 带你读《5G时代的承载网》之十一