当前位置: 首页 > 后端技术 > Java

DDD划分领域、子领域、核心领域、支撑领域的目的

时间:2023-04-01 16:20:07 Java

名词解释在DDD兴起的原因以及与微服务的关系中,举了一个研究桃树的例子。如果要研究桃树,就用桃树的器官,分为根、茎、叶、花、果、种子。这些器官中的每一个都可以被认为是一个研究领域,这些领域进一步细分为子域、核心域、通用域和支持域。等等,让我们回顾一下下面的桃树示例。DDD划分域、子域、核心域、支持域的目的是看上图。如果研究桃树是我们的事,那么我们怎样才能更快更有效地研究桃树呢?据记忆初中课本是这样研究的:第一步:确定研究对象,也就是研究领域,这里是一棵桃树。Step2:根据研究对象的一定维度,进一步拆分,比如拆分成器官,器官可以分为营养器官和生殖器官,其中营养器官包括根、茎、叶,生殖器官包括花,水果,种子,那么这些就是我们要研究的子领域。第三步:现在我们可以划分子域,找出核心域、通用域和支持域。至于为什么要这样划分,后面会解释。当我们找到核心域后,我们将在每个子域中进一步划分组织,如保护组织、营养组织和修饰组织。这也可以理解为将域继续划分为子域的过程。第四步:进一步分裂组织,可以分裂成细胞,如根毛细胞、导管细胞等,是否需要继续分裂细胞?这取决于我们正在研究的业务。比如以前的光学显微镜,对细胞的研究就结束了。至于其他业务,研究到一定阶段就没有必要继续拆分了。最小层次的领域通常是我们的领域。所谓实体、聚合、聚合根、实体、值对象,后面会进一步理解。DDD划分领域、子领域、核心领域、支撑领域的目的我们来总结一下上述名词的概念:领域:往往是业务的某一部分,比如销售部分,物流部分,还有电商的供应链部分等等,这些都是电商的各个领域(模块)。字段的主要功能是驱动范围。DDD会将问题的范围限定在一个特定的边界内,在这个边界内建立领域模型,然后用代码模型实现领域,解决相应的业务问题。简而言之,DDD的领域就是在这个边界内要解决的业务问题的领域。子域:一个相对的概念,我们可以进一步划分域,此时称为子域,甚至继续划分子域形成子子域(仍称为子域),只是就像我们研究植物的时候,如果研究的对象是桃树,那么果实的根茎叶就是田地,但是如果不仅要研究果实,还要研究组织甚至细胞,那么研究就是水果子字段和组织子字段。核心领域:所有领域中最关键的部分,什么意思,就是核心部分,对于企业来说,核心领域是一个企业的根本竞争力,也是创造利润最关键的部分,比如电子商务那么多领域,最重要的是什么?就是销售系统,不管你是2B还是2C,还是PDD,这些核心模块就是核心领域。通用域:除了核心域之外,一些需要自己做的域,比如认证、日志等,特点是部分可能被多个域共享。支持域:系统业务分析阶段最不关注的领域,即非核心域和非通用域,如电商中的支付、物流等,只是为了支持系统运行而存在的业务,甚至可以购买别人的服务,这类域名就是配套域名。需要注意的是,这些术语在实际的微服务设计和开发过程中可能不会用到,但是可以帮助理解DDD的核心设计思想和概念,而这些思想和概念在实际的IT策略设计业务建模和微服务设计可以借鉴。为什么要划分核心域、通用域、支撑域?由上可知,决定产品和企业核心竞争力的子领域是核心领域,是企业成功与否的主要因素,也是企业核心竞争力的主要因素。个人诉求不大,一个通用功能子域同时被多个子域使用就是通用域。还有一个功能子域是需要的,但不包含决定产品和公司核心竞争力的功能,也不包含一般功能的子域,这就是支撑域。与这三类子域相比,核心域是最重要的。下面说到目的的时候,我们会以核心域为例来详细介绍。如果通用域和支持域对应企业系统,比如通用域就是你需要使用的通用系统,比如认证,权限等,这样的应用很容易买到,而且没有限制企业特色。做太多的定制。支撑领域具有企业特色,但不具有通用性,如数据编码、数据字典等系统。那么为什么要划分这些新名词呢?我先想一个问题。对于桃树来说,根、茎、叶、花、果、种六大领域中,哪一个是核心领域?有不同的理解吗?有人说是种子,有人说是根,有人说是叶,有人说是茎等等,为什么会出现这样的情况呢?因为每个人的立场不同。如果你是果农,那么水果就是核心区。您的大部分业务应侧重于增加水果产量。如果你是景区的管理员,那么四月桃花开的就是芳菲。专注于它。如果你是林场工人,那么树干应该是你重点关注的地方。看到没有,大家对同一个领域的子领域理解不同,那么核心领域应该通过讨论来确定。确保每个人都同意。实际的业务开发,涉及的人很多,包括业务、架构师、后端开发、市场等,需要在一开始就确定好我们的核心领域。除了统一还有哪些超出大家理解的好处?对于一个企业来说,预算和时间都是有限的,这就意味着时间、精力甚至金钱都应该尽可能花在核心上。就像电商一样,电商企业众多,每个核心领域都不一样,导致市场结果千差万别。那么公司的战略重点和商业模式要找到核心领域,聚焦核心领域。总的来说,核心域、支撑域和通用域的主要目标是通过域划分,区分公司不同子域的不同功能属性和重要性,从而使公司可以针对不同的领域采取不同的资源投入和投入。子域。建设策略,其重视程度会有所不同。如果这篇文章对你有帮助,别忘了连打3个,点赞、转发、评论,我们下期再见!了解更多JAVA知识和技能,关注和私信博主(666)