DDD领域分析

news2024/11/25 18:28:12

DDD领域分析是一种对现实业务进行建模分析的一种方法,它对业务问题做了分类,分层与抽象,为后面代码的编写理清了思路。

如何理解DDD呢?首先DDD中有许多名称,我这里一一列举出来:领域,子域,核心域,通用域,支撑域,有界上下文,聚合,聚合根,实体,值对象等。

主要两个概概念,边界感和范围

那么如何去理解这些名词呢?

打个比方,现在要对一颗树进行分析与建模。

//如何理解领域和子域

  1. 确定研究对象,即研究领域,这里是一个桃树。
  2. 对研究对象进行细分。根,茎,叶属于生长类器官。花,果实,种子属于营养类器官。对于DDD领域,根,茎,叶,花,果实,种子等器官是细分后的问题域。这个过程就是DDD将领域细分为多个子域的过程。
  3. 继续对器官进行细分,比如叶子器官可以分为保护组织,营养组织,和输导组织。这个过程就是将子域进一步划分为多个子域的过程。
  4. 对组织进行细分,将组织细分为细胞,细胞成为我们研究的最小单元。细胞之间的细胞壁确定了单元的边界,也确定了研究范围的最小边界。

细胞核,线粒体,细胞膜等物质共同构建细胞,这些物质一起协作让细胞具有这类细胞的特定的生物功能,这里的细胞就被定义为DDD的聚合。细胞内的物质就可以理解为聚合中的聚合根,实体以及值对象等。在聚合内这些实体一起协作完成特定的业务功能。这个过程类似于DDD设计时,确定微服务内功能要素的边界过程。

每一个细分领域都会有一个知识体系,也就是DDD的领域模型,在所有子领域的研究完成后,我们就建议起了全域的知识体系了,也就建立起了全域的领域模型。

//如何理解核心域,通用域和支持域

在领域不断划分的过程中,领域会细分为不同的子域,子域可以根据自身的重要性和功能属性划分为三类子域,即使核心域,通用域和支撑域。

核心域:决定了产品和公司的核心竞争力的子域。他是业务成功的主要因素和公司核心竞争力。没有太多个性化的诉求。

通用域:同时被多个子域所使用的域是通用域。

支撑域:既不包含决定公司产品核心竞争力的功能,也不是通用子域的功能,就是支撑域(其他)

核心域和支撑域的划分是和公司实际的业务相关的,它决定了公司在某个问题上的投入。核心域必然是研究的重点。

商业模式的不同会导致核心域的划分结果不同。有的公司的核心域可能在客户服务。有的公司的核心域可能在产品有的可能在物流。在公司领域细分,建立领域模型和系统建设时候,我们就要结合公司的战略重点和商业模式,找到核心域且重点关注核心域。

总结:

领域的核心就是将问题域逐级细分,来降低业务理解和系统实现的复杂度。通过领域细分,逐步缩小微服务需要解决的问题域,构建合适的领域模型。而领域模型映射成的系统就是微服务了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ES集群搭建(仅供自己参考)

单节点问题:单机的elasticsearch做数据存储,面临的两个问题:海量的数据存储问题、单节点故障。 一个节点存储的数据是有限的。 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到…

【测试工具篇一】全网最强保姆级教程抓包工具Fiddler(2)

本文接上篇Fiddler介绍,开始讲fiddler如何使用之前,给大家讲讲http以及web方面的小知识,方便大家后面更好得理解fiddler使用。 目录 一、软件体系结构---B/S与C/S架构 B/S架构 C/S架构 二、HTTP基础知识 什么是http请求和响应? http协…

诗林工作室(编号:mb0003)分享:Finbiz自适应响应式网页设计模版,适用于前端设计、博客、官网等多类型开发模版

本设计模版来自外网,为HTML类型的模版,色彩多样,适合Web开发人员做前端站点设计参考使用。全站模版倾向于官网设计、自主博客等多行业的平台模版开发,适合各大CMS的主题模版开发参考,如常见的Wordpress主题开发、Z-Blo…

2-142【软件无线电原理与应用作业】基于matlab的圆形阵列的波束形成进行仿真

【软件无线电原理与应用作业】基于matlab的圆形阵列的波束形成进行仿真,具有14页文档。假设发射信号载频为1GHz,圆形阵列半径为0.8米,在圆周上均匀布置30个阵元。1.画出指向0度的方向图。2.如果目标在0度,有一不相干的干扰信号在3…

[CUDA] 设置sync模式cudaSetDeviceFlags

文章目录 1. 设置cuda synchronize的等待模式2 设置函数3. streamQuery方式实现stream sync等待逻辑Reference 1. 设置cuda synchronize的等待模式 参考资料:https://docs.nvidia.com/cuda/pdf/CUDA_Runtime_API.pdf cuda的 synchronize等待模式分为: Y…

[OS]vma? trap? Sys_mmap根据思路来实现!!

// Defined in user.hvoid *mmap(void *addr, size_t length, int prot, int flags, int fd, off_toffset);// TODO: kernel mmap executed in sysfile.cuint64sys_mmap(void){}#define VMASIZE 16struct vma {uint64 addr; // 映射的虚拟地址起始位置int len; …

性能调优专题(5)之深入理解Mysql事务隔离级别与锁机制

一、概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多并发事务问题,为了解决多事务并发问题&a…

CentOS 7 软件/程序安装示例

安装软件/程序 wget,前提需要用 root 用户 1、搜索软件/程序 yum search wget 搜索到软件/程序。 2、安装软件/程序 yum -y install wget 安装完成。 ---------------------------------------------------------------------------------------------------…

MySQL详细安装教程

一、从MySQL官网安装 可以翻译成中文看起来就舒服多了 下载并打开安装包,能看到版本是8.0.36,双击运行或者右键选择打开,打开后是一个安装向导,这个安装向导会先帮我们安装一个 mysql-installer 的程序,再通过该程序安…

Dubbo使用Nacos作为注册中心

使用 Nacos 作为注册中心实现自动服务发现 本示例演示 Nacos 作为注册中心实现自动服务发现&#xff0c;示例基于 Spring Boot 应用展开&#xff0c;可在此查看 完整示例代码 1 基本配置 1.1 增加依赖 增加 dubbo、nacos-client 依赖&#xff1a; <dependencies><…

洗衣小程序/洗鞋小程序 洗衣店系统,洗衣系统源码

多城市洗衣店小程序&#xff0c;对接京东物流&#xff0c;支持城市合伙人&#xff0c;支持在线商城&#xff0c;在线预约下单 支持抖音验券支持 支持电子券 支持水洗码

数据结构 —— 红黑树

目录 1. 初识红黑树 1.1 红黑树的概念 1.2 红⿊树的规则 1.3 红黑树如何确保最长路径不超过最短路径的2倍 1.4 红黑树的效率:O(logN) 2. 红黑树的实现 2.1 红黑树的基础结构框架 2.2 红黑树的插⼊ 2.2.1 情况1&#xff1a;变色 2.2.2 情况2&#xff1a;单旋变色 2.2…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.11

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第四周 特殊应用&#xff1a;人脸识别和神经风格转换&#xff08;Special applications: Face recognition &Neural style transfer&#xff09;4.11 一维到三维推广&#xff08;1D and 3…

unity3d————四元数概念

一、定义与表示 四元数是由一个实数部分和三个虚数部分组成&#xff0c;通常表示为q w xi yj zk&#xff0c;其中w是实数&#xff0c;x、y、z是实数系数&#xff0c;i、j、k是虚数单位&#xff0c;满足以下关系&#xff1a; i j k -1ij k&#xff0c;ji -kjk i&…

大数据分库分表方案

分库分表介绍 分库分表应用场景 分库分表介绍 大数据分库分表是一种数据库架构技术&#xff0c;旨在应对大数据量场景下的数据库性能瓶颈。以下是对大数据分库分表的详细解释&#xff1a; 一、定义与背景 定义&#xff1a; 分库&#xff1a;将一个大型数据库按照一定的规则…

可重入函数 volatile SIGCHLD

目录 1. 可重入函数2. volatile3. SIGCHLD 信号 1. 可重入函数 场景&#xff1a;当我们在全局区定义一个链表&#xff08;不带头结点&#xff09;&#xff0c;然后对链表做头插结点的操作&#xff0c;即插入 node1 结点&#xff08;如上图所示&#xff09;。在插入 node1 时需要…

『VUE』20. 组件嵌套关系page(详细图文注释)

目录 VUE的自带组件结构新建文件搭建结构app与Main Header Aside结构App.vueHeader.vueMain.vueAside.vue Main 与Article.Aside与Item结构Article.vueItem.vue 总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 因为前面已经有…

【Hive sql面试题】找出连续活跃3天及以上的用户

表数据如下&#xff1a; 要求&#xff1a;求出连续活跃三天及以上的用户 建表语句和插入数据如下&#xff1a; create table t_useractive(uid string,dt string );insert into t_useractive values(A,2023-10-01 10:10:20),(A,2023-10-02 10:10:20),(A,2023-10-03 10:16…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-16

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

Vulnhub靶机——DC-3

#环境准备 dc-3 虚拟机&#xff1a;网卡NAT模式 kali攻击机&#xff1a;网卡NAT模式 #信息收集 nmap轻车熟路扫一下dc3的地址&#xff0c;识别出joomla系统 面向百度渗透&#xff0c;得知有一个joomla的扫描器&#xff0c;直接安排上&#xff0c;这下有版本号和后台登录地址…