美文网首页DDD
实现领域驱动设计- 概述

实现领域驱动设计- 概述

作者: rhuanhuan | 来源:发表于2019-06-25 09:48 被阅读0次

DDD 总览

模型: 对现实的解释 —— 把与问题密切相关的部分抽象出来,而忽略无关的细节。
领域: 软件是为了解决用户的具体需求,这些用户应用软件的问题区域就是软件的领域。
领域模型(Domain Model):对问题有组织、有选择的抽象。
通用语言 (Ubiquitous Language)
限界上下文(Bounded Context)

限界上下文是一种概念上的边界,领域模型作用于其中。
在一个特定的限界上下文中,只使用一套通用语言,并且保证它的清晰性和简洁性。

战略建模

上下文映射图(Context Map)
问题域
解决方案域

将重要的、复杂的模型称为核心域(Core Domain)
将相对次要的称为支撑子域(Supporting Subdomain)

使用上下文映射图展示限界上下文之间的关系,来理解项目的范围。

上下文映射图展示限界上下文之间的关系

架构 (Architecture)

架构 (Architecture)
六边形(Hexagonal)架构

一个新的限界上下文或者上下文映射图可能需要一个新的架构。但是领域模型应当是架构中立的。模型周围与模型之间是存在架构的。
一种能够支撑限界上下文的架构是六边形(Hexagonal)架构,他可以辅助其他架构风格,比如SOA,REST,Event-Driven Architecture.
架构并非一成不变,业务的领域建模更加重要,因此不要本末倒置。

战术建模

实体(Entity)
聚合(Aggregate)
值对象(Value Object)
资源库(Repository)
领域服务(Domain Service)
领域事件(Domain Event)
模块(Module)

限界上下文中进行战术建模
战术设计的一个重要模式是聚合(Aggregate), 聚合可以是实体,也可以是实体和值对象,在聚合的生命周期中,必须保持事务的一致性。
聚合通过资源库进行持久化。

领域建模中,有些业务操作不能很自然的放在实体或者值对象上,此时可以使用无状态的领域服务(Domain Service)

领域事件(Domain Event)表示领域模型中发生的重要事件。比如在对聚合进行命令操作时,聚合本身将发布领域事件。

模块(Module)类似于Java中的包,如果机械的设计模块而不是根据通用语言,那么将得不偿失。模块中的领域对象应该是类聚在一起的。

相关文章

  • 实现领域驱动设计- 概述

    DDD 总览 模型: 对现实的解释 —— 把与问题密切相关的部分抽象出来,而忽略无关的细节。领域: 软件是为了解决...

  • 读《领域驱动设计》有感

    写完《DDD领域驱动设计初探》后,教主推荐了两本领域驱动设计的书--《领域驱动设计》和《实现领域驱动设计》,...

  • 1.复杂系统中采用DDD-lite实现模糊需求--开篇

    一、序 2015年底初识DDD(领域驱动设计),阅读和学习《领域驱动设计》By Eric和《实现领域驱动设计》By...

  • 领域驱动设计DDD

    最近在换工作,利用间隙看了两本领域驱动设计的经典书籍:《领域驱动设计:软件核心复杂性应对之道》,《实现领域驱动设计...

  • 《领域驱动设计精粹》读书笔记

    《领域驱动设计精粹》的作者Vaughn Vernon同样也是《实现领域驱动设计》的作者。书中精炼的概括了《DDD》...

  • 本周读书复盘

    1.《实现领域驱动设计》 DDD领域驱动设计这几年在软件设计领域非常火,特别是进来软件的业务需求日益复杂,软件规模...

  • 百问中台:基于DDD的中台领域分析与设计

    DDD领域分析与设计 概述 领域指的是范围和界限,主要用来确定业务的界限。领域驱动设计DDD(Domain Dri...

  • 领域驱动设计释厄录

    基础 学习DDD看的书《实现领域驱动设计》基础只是,概念《领域驱动设计:软件核心复杂性应对之道 》使用,流程,串联...

  • 实现领域驱动设计-领域服务

    领域服务定义 先看看领域服务的定义:领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。当某个操作不...

  • 实现领域驱动设计-领域事件

    定义 将领域中所发生的活动建模成一系列的离散事件。每个事件都用领域对象来表示。领域事件是领域模型的组成部分,表示领...

网友评论

    本文标题:实现领域驱动设计- 概述

    本文链接:https://www.haomeiwen.com/subject/nwlsqctx.html