DDD理解

1 篇文章 0 订阅

贫血领域对象
只用作数据载体,问没有行为和动作
贫血症和失忆症
业务代码复杂时,封装了大量的方法,原本的代码意图会逐渐不明显,这种情况称为贫血症引起的失忆症

解决复杂和大规模软件的武器可以被粗略地归为三类:抽象、分治和知识。
分治 分而治之,高内聚 低耦合
抽象 对业务领域问题的抽象
知识 DDD 可以认为是知识的一种

分治一般有两种手段,mvc 代码结构 或者 业务领域通过业务维度来划分

DDD提供了这样的知识手段,让我们知道何时去抽象出界限上下文以及如何去分治
DDD的界限上下文完美匹配微服务拆分要求, 界限上下文可以理解为一个微服务进程

结构设计分为三个层面
1、业务架构 根据业务需求设计业务模块关系
2、系统架构 设计系统和子系统的模块
3、技术架构 决定采用的技术及框架

核心观点
DDD的核心诉求就是将业务架构映射到系统架构上, 在响应业务变化调整业务架构时,也随之变化系统架构。而微服务追求业务层面的复用,设计出来的系统架构和业务一致,在技术架构上则追求充分解藕,可以自由的选择合适的技术架构,去中心化的治理技术和数据。 如何做一名优秀的技术领导者?对业务要有一定的前瞻性。来设计高可用的系统架构。

战术建模----细分上下文
内部关系:
实体:一个对象尤其标识(唯一标识)区分,称为实体。
值对象:对象对事物进行描述,而没有唯一标识。具有不变性,相等性和可替换性
聚合根:一组相关对象的集合,作为一个整体被外界访问。聚合根是这个聚合的根结点
聚合内设计小聚合,定义好边界
领域服务:一些重要的领域行为或操作,可以归类为领域服务,既不是实体,也不是值对象的范畴
领域事件:对领域内发生的活动进行的建模

DDD工程实现
模块:一般情况下我们是按照领域对象、领域服务、领域资源库、防腐层等组织方式定义的
领域对象:领域对象具备了行为,同时,比起将这部分逻辑写在服务内,领域功能的内聚性更强,职责更加明确。
资源层:聚合了各个资源库的数据信息,同时也承担了资源存储的逻辑
防腐层:亦称适配层,对外部进行访问时,引入防腐层的概念来进行上下文对外访问的一次转义
领域服务:将领域行为封装到领域对象内,将资源管理封装到资源层,外部上下文的访问封装的防腐层, 此时,服务领域本身所承载的职责更加明确了,即通过串联领域对象,资源层,防腐层,等一系列对象的行为,对其他上下文提供交互的接口
数据流转:首先领域的开放服务通过信息传输对象(DTO)来完成与外界的数据交互;在领域内部,我们通过领域对象(DO)作为领域内部的数据和行为载体;在资源库内部,我们沿袭了原有的数据库持久化对象(PO)进行数据库资源的交互。同时,DTO与DO的转换发生在领域服务内,DO与PO的转换发生在资源库内。
上下文集成:一个上下文对另一个上下文进行集成时,若需要一定的适配和隔离,可以引入防腐层的概念
分离领域:对外暴露的只能是服务接口,领域对外暴露的业务逻辑值依托于领域服务,此时,应用服务对外部来说是一个领域服务,整体看起来是一个独立的限界上下文,此时应用服务对内还属于应用服务,对外已是领域服务的概念,需要将其暴露为微服务。

本质是为了 高内聚、低耦合。紧靠本质

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值