图中是暗黑领域,非常牛逼的技能。

背景

DDD中出现的名词: 领域,子领域,核心域,通用域,支撑域,限界上下文,聚合,聚合根,实体,值对象 都是关键概念,但是又比较晦涩,在开始DDD之前,搞清楚这些关键概念名词非常的重要。

那它们作用体现在哪里呢?

领域-子领域

领域是: 从事专门活动或者事业的范围。 

领域的作用是:确定范围和边界

DDD研究和解决业务问题过程如下:

DDD中的领域是:边界中要解决的业务问题域

领域就是范围,范围有大小之分,所以,DDD中大范围的叫领域,小范围的叫子领域;

DDD是一种处理高度复杂领域的设计思想,试图分离技术实现的复杂度。

那么问题来了?

面对错综复杂的业务领域,DDD是如何让业务从复杂变得简单,更容易理解? 如何让技术实现更容易?

**

答:跟自然科学的研究方法类似。

可以看看植物的完整生物知识学体系建立过程。

小结:

1,领域可以逐级细分为子领域,每个子领域都有一个知识体系(DDD的领域模型),

2,当所有的子领域的知识体系都建立完毕,就完成了对领域的知识体系建立,即建立了全域的领域模型。

从业务领域来分析对比二者的细分过程是否一致。

保险行业

对比结果:不同行业业务模型不一样,但是领域建模和微服务建设过程基本一样,核心思想:把问题领域逐步细分为子领域,从而降低业务理解和系统实现的复杂度

核心域-通用域-支撑域

领域可以按照规则细分为子领域,子领域按照重要程度和功能特性有分为3类。即核心域,通用域,支撑域;

为什么要对子领域再进行核心域,通用域,支撑域的划分?目的是什么?

公司的IT系统建设过程中,资源和预算有限,在不同类型的子领域有不同的关注度和资源投入。

重要程度跟公司的战略方向和商业模式有关系,不同的公司,关注点不一样,即商业模式不同,核心领域的划分结果不同。

在公司领域细分、建立领域模型和系统建设时,我们就要结合公司战略重点和商业模式,找到核心域了,且重点关注核心域。

小结

领域的核心思想是逐级细分子领域,来降低业务的理解复杂度和技术实现的复杂度。

核心域,通用域,支撑域的划分目的是:区分不同的子领域在公司的重要程度和功能属性,从而提供不同的资源投入策略和关注度。

一句话来表达:

领域拆分为子领域就是做减法的过程,降低了业务的理解复杂度和系统实现的复杂度,而核心域,通用域,支撑域的划分是跟公司的商业模式有关系的,决定了子领域的不同优先级和资源投入策略。

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各种资源,关注公众号‘李福春持续输出’,发送'学习资料'分享给你!

DDD之2领域概念的更多相关文章

  1. DDD(Domain-Driven Design) 领域驱动设计

    DDD(Domain-Driven Design) 领域驱动设计 1. DDD(Domain-Driven Design)是什么? DDD是Eric Evans在2003年出版的<领域驱动设计: ...

  2. 领域驱动设计(DDD)部分核心概念的个人理解

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  3. 领域驱动设计(DDD)部分核心概念的个人理解(转)

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  4. DDD学习笔录——领域驱动设计DDD概念总结

  5. DDD战略设计相关核心概念的理解

    前言 本文想再讨论一下关于领域.业务.业务模型.解决方案.BC.领域模型.微服务这些概念的含义和关系.初衷是我发现现在DDD领域建模以及解决方案落地过程中,常常对这些概念理解不清楚或者有歧义,导致我们 ...

  6. 【DDD】持久化领域对象的方法实践

    [toc] 概述 在实践领域驱动设计(DDD)的过程中,我们会根据项目的所在领域以及需求情况捕获出一定数量的领域对象.设计得足够好的领域对象便于我们更加透彻的理解业务,方便系统后期的扩展和维护,不至于 ...

  7. 从壹开始微服务 [ DDD ] 之十 ║领域驱动【实战篇·中】:命令总线Bus分发(一)

    烽火 哈喽大家好,老张又见面了,这两天被各个平台的“鸡汤贴”差点乱了心神,博客园如此,简书亦如此,还好群里小伙伴及时提醒,路还很长,这些小事儿就随风而去吧,这周本不打算更了,但是被群里小伙伴“催稿”了 ...

  8. 【DDD】使用领域驱动设计思想实现业务系统

    最近新接了一个业务系统——社区服务系统,为了快速熟悉和梳理老系统的业务逻辑和代码,同时对老系统代码做一些优化,于是打算花上一个月时间不间断地对老系统服务进行重构.同时,考虑到社区业务的复杂性,想起了之 ...

  9. DDD学习笔录——领域驱动设计的常见误区(即错误的理解)

    可以将DDD看成一种开发思想体系:它促成了一种新的以领域为中心的思维方式. 它是一种学习过程,而非最终目标,这就是DDD的最大优势. 任何团队都可以编写一个软件来满足一组用例的需求,但那些将时间和精力 ...

随机推荐

  1. Altium Designer PCB封装bug,元件焊盘位置偏移解决方法

    1.问题描述:在拖动几个电阻位置时,意外发现Altium designer20版本软件的一个bug——0805的电阻两焊盘位置发生了偏移,如下图所示. 2.解决办法: ①选中焊盘偏移的封装,右键剪切掉 ...

  2. 用js写一个贪吃蛇小游戏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. python解析谷歌在线表格链接,转化为数组形式,图片转化为链接

    在线表格已成为趋势,传统的表格导入导出已经不能满足现在企业的发展. 必须支持在线表格的导入,只需要输入在线表格的链接,就能将数据读取出来. 而且相比相传表格,能够将图片信息一块读取.在线表格中的图片也 ...

  4. Python 的缩进是不是反人类的设计?

    前些天,我写了<Python为什么使用缩进来划分代码块?>,文中详细梳理了 Python 采用缩进语法的 8 大原因.我极其喜欢这种简洁优雅的风格,所以对它赞美有加. 然而文章发出去后,非 ...

  5. git仓促拉去提交输入密码读取钥匙串

    项目的目录执行: git config --global credential.helper osxkeychain

  6. 如何在最新版本的eclipse上使用低版本的jdk

    高版本的eclipse在第一次打开的时候只能配置相匹配的jdk.例如我所示版本eclipse版本初始化的时候提示要jdk1.8版本才能打开,可是根据实际工作情况需要jdk1.7. 我的eclipse版 ...

  7. ESXI 6.5利用Centos7重置root密码

    ESXI6.5宿主机,很久没有登录,再次登录的时候,发现忘记root密码了 1.先将刻录一个CentOS7的启动光盘或U盘,并将服务器的启动项修改为光盘 2.保存BIOS重启后,选择Troublesh ...

  8. 详细讲解使用Sublime Text 3进行Markdown编辑和实时预览

    所需安装的插件 Markdown Editing // Markdown编辑和语法高亮 Markdown Preview// Markdown导出html预览 LiveReload// 时时预览 安装 ...

  9. 关于RAID小结

    独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks ...

  10. 观察者模式C++实现

    #include <iostream> #include <vector> #include <string> using namespace std; typed ...