大白话领域驱动设计


为什么需要DDD
DDD到底是什么
思维编程方式,面向对象,战术设计,战略设计
概要设计域,通用语言,界限上下文
建模

依赖业务
领域层划分边界

战略设计到战术设计
聚合根,实体,值对象

核心域,支撑子域,通用子域
商品中心/订单中心/支付中心/物流中心
推荐/爬虫
权限/认证

根据关联业务拆分.而不是根据模块拆分
核心业务与边缘业务进行拆分

基于领域模型划分
业务需求变更划分
划分域团队化

通用语言
术语表

限界上下文

子域

基于电商系统按时间线发现限界上下文
上架--->浏览商品(下单)--->支付--->发货

ACL防腐层(适配)
多个上下文来进行协作

构建电商上下文关系映射图
销售核心领域
促销方式上下文
促销活动管理上下文
内容管理上下文
购买行为上下文

商品域(核心域)

商品上下文
促销活动管理上下文
用户上下文
支付上下文
订单上下文
物流上下文

事件风暴
商品加入购物车--->获取商品的基础信息--->权益信息--->锁定库存--->计算运费--->风控校验--->订单已创建(核心事件)--->支持事件--->发货调度--->仓库出库--->物流跟踪--->确认收货(是)--->签收成功
确认收货(否)--->发起售后--->售后审核--->退货入库--->库存更新--->售后状态变更--->支付信息查询--->退款成功

战略设计:领域分析模型

实体和值对象
entity(可识别)
一个实体是一个唯一的东西。并且可以在相当长的一段时间内持续的变化,我们可以对实体进行多次的修改。但是尽管经历了多次的修改,实体始终拥有唯一一个身份标识
valueobject(不变性和可替换性,值对象通常是用来度量和描述事物)
它度量或者描述了领域中的一件东西
它可以作为不变量
它将不同的相关的属性组合成了一个概念整体
当度量和描述改变时,可以用另外一个值对象予以替换
它可以与其他值对象进行相等性比较
它不会对协作对象造成副作用

充血模型

聚合和聚合根
聚合要满足业务规则
到底引用实体还是引用id
聚合生命周期一致
数据一致性
聚合根之前引用通过id
聚合根引用实体,直接引用对象
聚合根引用值对象,直接引用对象

领域事件
异步

DDD进阶

战术设计:领域设计模型

用例分析法和领域事件梳理
动词+业务梳理
createOrder

购物车加入商品
(订单)itemAdd

5w1h8c
性能
成本
事件
可靠性
安全性
合规性
技术性
兼容性

领域建模
名词+关系+属性

通用语言/划分域/划分限界上下文/梳理上下文的协作关系

uml用例图
uml关系图
uml时序图

战略设计
战术设计

用户层--->应用层--->领域层--->基础层

CQRS架构

新增修改和查询分离
新增修改(写入领域事件(mq))

六边形架构
内外六边形

规范

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星月IWJ

曾梦想杖键走天涯,如今加班又挨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值