DDD从入门到精通:基础篇

这篇文章主要还是表述清楚DDD相关的基础概念,因为DDD入门有一定的专业名词,还是得有个基本的了解。

先讲解下领域模型作用

对软件需求进行设计,维持其内在逻辑的一致性

1)划分边界、也是一种高内聚、低耦合

2)所有逻辑都是内聚在对象内部的【包含行为和数据】

 

为什么需要DDD?

 

 

行业现状:

 

贫血模型、充血模型

 

  • 领域模型就是DDD?
    • 其实领域模型早于DDD,很早就存在了,DDD算是一种实现方式而已
  • 战略设计、战术设计
    1. 领域、子域、界限上线文、上下文映射图这些是DDD的战略设计(帮助服务的关系设计、边界设计)
    2. 实体、值对象、聚合、CQRS、事件溯源、这些是DDD的战术设计(实现手段
      • 实体:具有唯一标识,实体可能会变化,比如订单状态,但它的唯一标识不会变化。有生命周期的概念(待支付、已支付、关闭等)
      • 值对象:特点是不变形。创建之后不会被改变。如果改变了,就是一个新的地址(打个比方),最多算是描述,仅仅只用来度量或描述的对象应该被设计为值对象
      • 聚合:关联对象的实体,将其作为一个单元来处理数据变更。
      • 聚合根:将多个实体和值对象聚合在一起的实体        
        • 仓储:领域对象都怎么构建出来的,它们存在哪里?这就不得不提到仓储(Repository)这个概念。在DDD理念里,仓储负责领域对象的存储,但仓储本身并没规定存储介质。也就是说仓储只负责定义领域对象的读/写协议,至于具体用内存、MySQL还是Oracle,它不关心。在《领域驱动设计:软件核心复杂性应对之道》中提到,一般只对聚合根建立仓储

示例:

        •  

           

    • 通过战略设计,划分模块和服务的边界与依赖关系,对微服务架构的设计至关重要。

  • 六边形架构:不同的外部系统通过不同的适配器与领域模型交互,可以是HTTP/WEBSERVICE/RPC只需要为这些不同的访问接口提供不同的适配器就可以了
  •  

     

待补充。。。

 

posted @   陶朱公Boy  阅读(591)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示