暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

领域驱动设计:战略设计与战术设计

星河之码 2022-03-05
3864

尺有所短,寸有所长;不忘初心,方得始终。

DDD的的具体落地分为战略设计阶段和战术设计阶段。这两个阶段指导着系统需求分析一直到编码实现,是由战略设计到战术设计推进的过程。主要包含需求分析——统一语言——领域模型——程序设计——编码实现。

一、战略设计

战略设计也叫战略建模,通过DDD的理论,对业务需求进行拆解分析,划分子域,梳理限界上下文,通过领域语言从战略层面进行领域划分以及构建领域模型。并且在在构建领域模型的过程中梳理出业务对应的聚合、实体、以及值对象。

在战略设计中最主要的工作只有两个:

  • 领域划分

    通过对业务的拆解以及公司团队的业务定位,将业务场景分解,识别出核心领域、通用域、支撑域。并确定领域的边界以及领域间关系。

  • 领域建模

    通过业务场景,对用户故事以及用例的分析,梳理限界上下文,确定领域边界以及上下文映射图(Context Map),建立领域模型,分析领域事件,聚合、实体、以及值对象。

二、战术设计

战术设计也称为战术建模,以领域模型基础,通过限界上下文作为服务划分的边界进行微服务拆分,在每个微服务中进行领域分层,实现领域服务,从而实现领域模型对于代码映射目的,最终实现DDD的落地实施。

战术设计是DDD的最终落地实现的阶段:

  • 服务划分

    通过战略设计输出各个领域与限界上下文后,可以籍此进行微服务划分与设计,一个服务可以有多个聚合。

  • 领域模型

    通过战略设计中的领域建模,落地值对象、实体、领域服务、领域事件

  • 资源库

    确定聚合根之后,建立资源库,对领域对象的CRUD都通过资源库实现

  • 工厂

    负责领域对象的创建,用于封装复杂或者可能变化的创建逻辑

  • 聚合

    根据限界上下文,封装实体与值对象,并维持业务的完整性与统一性。

  • 应用服务

    隔离防腐层与领域层,对领域进行服务编排与转发。

三、总结

  • 战略设计与战术设计是DDD落地的基础,战略设计是支撑战术设计实施的前提

  • 战略设计可以控制和分解战术设计的边界和粒度

  • 战术设计则以实证角度验证领域模型的有效性、完整性与一致性

  • 战术设计以演进的方式对之前的战略设计阶段进行迭代,形成螺旋式上升的迭代设计

文章转载自星河之码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论