领域驱动设计(DDD)系列文章前言

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

国外的研究人员倾向于研究抽象的概念,而国内的程序员往往喜欢迅速实践。然而,任何实践都需要有理论支持,而理论本身也不能脱离实践。只有将理论和实践相结合才能产生出更具价值和合理性的成果。这正如王阳明所说的“知行合一”。通过将理论与实践相融合,我们能够更富有成效和合理的方式进行工作。

在我上大学的时候,大约六七年前,有人向我推荐了一本书叫做《领域驱动设计:软件核心复杂性应对之道》。当时我只是匆忙翻了一下,感到完全摸不着头脑,只记住了那个名词——领域驱动设计。那时候,开发软件对我来说并没有所谓的设计过程,我一上手就直接开始写代码。之后,随着我积累了一定的开发经验,我渐渐明白了设计的重要性。

实际上,在工程领域,比如建筑行业,要盖一栋大楼,有具体的规范可以依据。但是,在软件工程这个新兴行业中,并没有非常具体的规范可供参考。

我认为领域驱动设计和微服务是非常好的结合。当Eric Evans发表了《领域驱动设计:软件核心复杂性应对之道》这本书时,微服务还没有像现在这样流行。然而,他的这本书事实上提前预言了微服务的发展趋势。这意味着,在领域驱动设计的指导下,我们可以更好地理解和应用微服务架构,并将其与领域对象的划分和组织相结合,从而有效地解决软件开发中的复杂性问题。

我准备写关于领域驱动设计(DDD)的系列文章。当然,为了编写这些文章,我阅读了许多相关书籍,并结合自己的经验总结了一些方法。我还将提供具体的代码实现方法等内容。然而,请注意这些只是我个人的经验和学习记录,并不具有标准和规范的性质。领域驱动设计是一个非常庞大的主题,我只是略懂其中一些内容。

Evans的领域驱动设计包括战略部分和战术部分:

战略设计部分包括

  • 限界上下文和通用语言进行
  • 运用子域进行战略设计
  • 上下文映射

战术设计部分包括

  • 实体、值对象、资源库
  • 架构、模块、聚合
  • 领域事件、REST资源调用

战略部分主要是理论相关知识,制定战略,而战术部分主要是具体的实现方法,具体如何做实现领域驱动设计。

我也主要从以上这些内容进行讲述分享。我认为在三五年之后,我可能会有更多有关领域驱动设计的见解与想法。不过,目前我撰写的这一系列与DDD相关的文章,希望能够为一些程序员提供一些启发和帮助,也理清楚自己对于领域驱动设计的一些思考。这就是我写这些文章的初衷。

你可能感兴趣的:(领域驱动设计,DDD,领域驱动设计)