美文网首页
架构思维学习总结(十八)

架构思维学习总结(十八)

作者: 奋斗的韭菜汪 | 来源:发表于2022-07-11 17:00 被阅读0次

    5-3 DDD之战略设计

    一、战略和战术的区别

    战略是目标和方向,战术是具体方法论
    同时战略和战术又是相对的,战略总是比战术高一个维度。

    二、DDD的诞生和发展

    三个重点:

    • 领域专家参与
    • 子域的划分
    • 通过设计模式,将领域知识注入设计模型中

    DDD是指导思想,微服务是实现方式。
    统一语言(财务的订单与销售的订单与开发的订单,由于关注点不同会是不同的概念,)
    贫血模型不适合DDD,(object只有get和set)

    领域划分的原则:
    image.png

    x->业务和别人不同的程度
    y->商业逻辑复杂度/难度


    image.png
    为什么要使用DDD?
    image.png

    三、DDD限界上下文

    何为限界上下文
    限界上下文是一个业务概念
    每个\color{red}{限界上下文(Bounded context)}都将具有自己的\color{red}{统一语言(Ubiquitous Language)}(导致的结果就是他们的实现要分开去实现,每个界限上下文都有自己的aggregate,比如用户的订单和商家的订单,需要通过不同的entity(用户aggregate下的entity和商家aggregate下的entity)去实现)

    Bounded context和Subdomain的区别

    他们是problem和solution的关系。
    Bounded context 是解决问题;同时它是沟通层面的(使用统一语言来沟通的)。
    Subdomain 是提出问题;同时它是针对项目领域而已,将复杂的大问题拆分成小问题
    Bounded contexts可能跨多个subdomain(比如:运营部门有售前和售后,售前售后分别有自己的子域,但两个子域同时属于运营这个限界上下文),当然一个Bounded contexts可以只包含一个subdomain

    Bounded context和组织的关系

    一般情况下Bounded context和部门相对应,它属于一个业务概念(可以统一语言来沟通)

    四、如何开发统一语言

    白板+便签纸
    事件风暴
    Hands-On MODELER(要求架构师能够写代码)
    模型即设计,设计即编码

    五、DDD复杂系统应对

    大部分技术人员的思维:制造复杂性来彰显技术的重要性。
    DDD的思维:通过战略设计来减轻战术实现的复杂性。(所以简单系统并不适合使用DDD)


    image.png
    分层 英文 描述
    表现层 User Interface 用户界面层,或者表现层,负责向用户显示解释用户命令
    应用层 Application Layer 定义软件要完成的任务,并且指挥协调领域对象进行不同的操作。该层不包含业务领域知识。
    领域层 Domain Layer 或称为模型层,系统的核心,负责表达业务概念,业务状态信息以及业务规则。即包含了该领域(问题域)所有复杂的业务知识抽象和规则定义。该层主要精力要放在领域对象分析上,可以从实体,值对象,聚合(聚合根),领域服务,领域事件,仓储,工厂等方面入手
    基础设施层 Infrastructure Layer 主要有2方面内容,一是为领域模型提供持久化机制,当软件需要持久化能力时候才需要进行规划;一是对其他层提供通用的技术支持能力,如消息通信,通用工具,配置等的实现;

    六、上下文映射关系(context Maps)

    上下文映射有助于理解整个项目,能够显示不同的绑定上下文之间的关系。
    同时理解绑定上下文之间的关系有利于正确的构建域模型


    image.png

    九种关系(可以自定义,提前去约定)


    image.png
    作业:实现一个战略设计图

    相关文章

      网友评论

          本文标题:架构思维学习总结(十八)

          本文链接:https://www.haomeiwen.com/subject/sojnbrtx.html