DDD-领域驱动设计

1. 名词解释

领域、子域、核心域、通用域、支撑域、限界上下文、实体、值对象、聚合、聚合根

核心域:决定产品和公司核心竞争力的子域

通用域:没有太多个性化诉求,同时被多个子域使用的通用功能子域;

支撑域:必需的,但既不是公司核心,也不含通用功能的子域;

实体:有唯一标识,可修改的。个人理解就是一个对象包含了很多JAVA代码中的基础类型的字段,当然这个对象可以包含复杂对象,也就是下面的值对象,例如一个Person类,包含姓名(String)、年龄(Integer)、性别(Integer)、地址(Address),这个地址就是一个值对象;

值对象:无唯一表示,不可修改的(一旦修改了,就不再是原来那味了)个人理解就是JAVA代码中的复杂对象,就是上面示例的地址对象;

 

2. 划定领域模型和微服务的边界

  • 第一步:在事件风暴中梳理业务过程中的用户操作、时间以及外部依赖关系等,根据这些要素梳理出领域实体等领域对象。
  • 第二步:根据领域实体之间的业务关联性,将业务紧密相关的实体进行组合形成聚合,同时确定聚合中的聚合根、值对象和实体。在这个图里,聚合之间的边界是第一层边界,他们在同一个微服务实例中运行,这个边界是逻辑边界,所以用虚线表示
  • 第三步:根据业务及语义边界等因素,将一个或者多个聚合划定在一个限界上下文内,形成领域模型。在这个图里,限界上下文之间的边界是第二层边界,这一层边界可能就是未来微服务的边界,不同限界上下文内的领域逻辑被隔离在不同的微服务实例中运行,物理上相互隔离,所以是物理边界,用实线表示

3. 设计步骤

(1)提炼问题域

例如一个在线拍卖系统,首先是一个非常大的概念

(2)分界问题域

以各个维度去拆分成子域。例如会员身份是表示会员注册、喜好和详细信息的系统区域;卖家则是处理卖家活动的过程和行为;拍卖是处理拍卖时间计划管理以及竞价活动的问题域;名册是拍卖网站上当前提供的物品目录;争议解决是处理会员与卖家之间的纠纷。

(3)确定子域类型

划分好子域后,确定子域是通用域、核心域还是支撑域,以便理解产品的业务价值。

【未完待续】

参考资料:

【领域驱动设计模式、原理与实践】

DDD学习笔记 - 基础篇(Ⅰ)

DDD学习笔记 - 基础篇(Ⅱ)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值