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

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

不同于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的具体实现。内容上也会加入一些代码段的部分以让开发人员也可以了解领域驱动设计的思想,下期见啦~

相关文章
|
安全 网络安全 定位技术
使用CDN服务对网页加载速度有何影响,如何选择合适的CDN提供商
使用CDN服务对网页加载速度有何影响,如何选择合适的CDN提供商
|
10月前
|
Java 物联网 Kotlin
Kotlin - 面向对象之抽象类与接口
Kotlin - 面向对象之抽象类与接口
53 0
|
存储 小程序 C语言
C语言学习路径指南:从入门到精通
最详细的C语言学习路径指南。
434 1
|
Arthas SQL 监控
动态修改LOGGER日志级别
大多数情况下,我们会在打印日志时定义日志的LOGGER级别,用来控制输出的信息范围。 一方面,过多的输出会影响查看日志的效率,另一方面,过少的日志让问题定位变得困难。 但当线上出现问题时,线上容器通常定义在info级别,发生一些疑难问题时,光靠info级别的日志很难定位问题。 一个典型的场景:在一些需要打印MySQL语句的场景,如果你正在使用MyBatis框架,由于MyBaits中SQL语句是DEBUG级别的信息,通常在线上容器就没法看到。
774 1
|
机器学习/深度学习 分布式计算 运维
【云栖号案例 | 互联网 】美柚上云 致力成为最懂女人的互联网企业
美柚大数据之路的初期,遇到平台及运维成本高、扩展性低、人手经验不足等问题。通过数加达到0运维、降低大数据使用门槛,实现常用数据源的全覆盖。
【云栖号案例 | 互联网 】美柚上云 致力成为最懂女人的互联网企业
|
Java 数据库连接 数据库
单点登录CAS5-服务端通过数据库认证用户
原理 实现方式有两种 一是自己写数据库获取用户名密码再认证的类 一是借助CAS自带的JDBC支持来实现认证 自己写认证类(推荐) 1、CSA的默认登录用户密码配置在deployerConfigContext.
1772 0
|
流计算
<推荐>65个以自然风光为背景的UI设计
以自然风光为背景的设计是当前UI设计是趋势。在平时浏览网站的时候,也许你会不经意间看到网站Header或者整个网站以清新的自然景象为背景,是否让你眼前一亮呢?下面介绍的65个以自然风光为背景的设计也许会给你一些灵感,这些设计有的是Photoshop教程,有的是Photoshop笔刷和纹理,也有的是矢量素材。
971 0