首页 > 其他分享 >DDD领域划分理论知识

DDD领域划分理论知识

时间:2022-12-01 14:13:47浏览次数:38  
标签:对象 领域 划分 理论知识 内聚 上下文 限界 DDD

领域划分

使用DDD过程中,在面向业务变化时首先要理解业务的核心问题,有针对性进行
关注点分离出找到相对内聚的业务活动形成子问题域。子问题域内部是相对稳定的,
而子问题是很容易变化的,DDD核心在于领域边界的识别和划分

DDD是以领域为核心的,实践DDD时要先根据问题域划分出相关的领域
描述应用需要解决什么问题。领域中存在限界上下文,它用于解决领域内
的特定问题,具备特定的职责,并存在边界。限界上下文中的领域模型具备
较高的内聚性,不同边界之间需要透过显示边界进行通信

在根据需求划分限界上下文时,可以从需求术语中提取一些概念对象,
为它们绑定一定行为。
接着将高耦合的对象划分在一期,寻找它们的内在关系,
尝试形成对应的限界上下文***。最后,整理各个限界上下文的行为,验证
它是否完整、清晰和高内聚

领域模型是对领域内的关键概念及其关系的可视化表示,通过描述多个领域对象
之间的关系,实现业务功能场景在软件系统的映射,设计的关键在于抽象出限界
上下中的领域对象及其关系,并通过领域模型图表示出来

领域对象能够表达出业务意图,它们具备数据和行为,包括实体、值对象和聚合等概念

  1. 实体是一种对象,有唯一的标识识别自身,具备一定的生命周期,并在生命周
    期内根据状态提供不同的行为
  2. 值对象没有唯一的标识,在领域模型中是不可变和可共享的
  3. 聚合由一系列实体和值对象内聚而成,表达了一个完整的领域概念

多个限界上下文需要进行集成,才能完整解决领域内的问题。在集成时需要注意不同界限
上下文中领域概念的映射和翻译,限界上下文主要由一下几种映射方式

  1. 合作关系: 两个上下文紧密合作的关系
  2. 共享内核: 两个上下文依赖部分共享的模型
  3. 防腐层: 一个上下文通过一些适配和转换与另一个上下文交互
  4. 客户方-供应方开发: 上下文之间有组织的上下游依赖
  5. 开放主机服务: 定义一种协议来让其他上下文对本上下文进行访问
  6. 遵奉者: 下游上下文只能盲目依赖上游上下文
  7. 发布语言: 定义开放主机的协议
  8. 大泥球: 混杂在一期的上下文关系,边界不清晰
  9. 另谋他路: 二个完全没有任何联系的上下文

一般会把领域对象的行为和数据放在一起,以达到设计上的高内聚低耦合
并屏蔽领域对象的细节,暴露公开的行为方法。当存在一些不归属于任何
领域对象的领域行为或操作时,就放在领域服务中

领域服务是领域模型的一部分,应尽量避免将过多的领域行为放在领域服务
中,一个合格的领域对象应该是行为和数据都兼并的

标签:对象,领域,划分,理论知识,内聚,上下文,限界,DDD
From: https://www.cnblogs.com/codechange/p/16941227.html

相关文章

  • 运用领域模型——DDD
    模型被用来描述人们所关注的现实或想法的某个方面。模型是一种简化。它是对现实的解释——把与解决问题密切相关的方面抽象出来,而忽略无关的细节。 每个软件......
  • 基于DDD的CQRS架构下的Equinox开源项目(转载)
    原文:基于DDD的CQRS架构下的Equinox开源项目-春光牛牛-博客园(cnblogs.com)一.DDD分层架构介绍本篇分析CQRS架构下的Equinox开源项目。该项目在github上star占有2.4k......
  • 数据库最后理论知识
    目录数据库最后理论知识一、SQL注入问题二、视图三、触发器四、事务五、存储过程六、函数七、流程控制八、索引相关概念九、索引数据结构十、慢查询优化测试索引联合索引全......
  • 整数划分问题
    整数划分问题     将正整数n表示成一系列正整数之和:,其中,k≥1。正整数n的这种表示称为正整数n的划分。请设计一个算法,求正整数n的不同划分个数或方案。例如正整数6有......
  • 《ASP.NET Core技术内幕与项目实战》精简集-DDD准备5.5:集成事件RabbitMQ
     本节内容,部分为补充内容,部分涉及到9.3.10-9.3.12(P335-342)。主要NuGet包:RabbitMQ.Client 微服务间,跨进程的事件发布和订阅,需要借助第三方服务器作为事件总线,目前常......
  • 《ASP.NET Core技术内幕与项目实战》精简集-DDD准备5.4:领域事件MediatR
    本节内容,部分为补充内容,部分涉及到9.3.8-9.3.9(P327-334)。主要NuGet包:MediatR.Extensions.Microsoft.DependencyInjection 领域事件可以切断领域模型之间的强依赖关系......
  • 《ASP.NET Core技术内幕与项目实战》精简集-DDD准备5.3:值对象
    本节内容,部分为补充内容,部分涉及到9.3(P321-326)。主要NuGet包:无 一、使用值对象的两种情形及其EFCore映射配置1、没有标识符的从属实体类如商店的地理位置,包含经度和......
  • 关于领域驱动设计(DDD)中聚合设计的一些思考
    DDD社区官网上一篇关于聚合设计的几个原则的简单讨论:文章地址:http://dddcommunity.org/library/vernon_2011/,该地址中包含了一篇关于介绍如何有效的设计聚合的一些原则,共......
  • 深入浅出DDD编程
    作者|刘嘿嘿、离夏、立羽导读最近几年,微服务拆分大行其道,在业务越来越复杂的情况下,许多业务纷纷抛弃了传统单体架构,拥抱微服务。但随着微服务的拆分结束,大家又发现了新的......
  • 《ASP.NET Core技术内幕与项目实战》精简集-DDD准备5.1:DDD基本概念
    一、DDD领域驱动设计1、DDD是一种设计思想,领域即业务,业务驱动设计,直接将业务映射到代码中。2、DDD的设计始于领域的划分,一个项目可以划分为多个子域,并可以按功能划分为核......