领域驱动设计-初探(一)

问题

  • DDD是什么?为了解决什么问题?
  • 什么叫领域转件相当于我们什么角色?

DDD

DDD是领域驱动设计(Domain-Driven-Design),了解它首先我们要了解什么是领域模型呢。

我们在现实中遇到了一个问题,需要RD开发一个系统来解决它,这时候就需要将这个问题映射成一个抽象的模型,这个模型作为代码和现实的纽带被叫做领域模型。

我们的领域专家和研发工程师对领域模型不断的探讨,精简,逐渐的使其越来越抽象通用,逐步的使我们的系统更完善,功能更强大。

上述突出以下几点:

  1. 领域模型是现实和程序的纽带,他反应了一个具体的显示问题。
  2. 它需要被领域专家和研发讨论,所以应该有统一的双方都能理解的术语。
  3. 它不是一成不变的,在做加法的同时也需要在讨论中逐渐做减法。
  4. 它不单单是一个简单的数据集合,他还描述了领域模型间不同的关系。
  5. 它需要不断的演进。

统一术语

在领域模型中我们需要统一术语我们称他们为通用语言,他能减少领域专家和我们的研发的沟通成本,避免翻译带来的语义混淆。

两者是通过术语来沟通的:领域专家的模型—->术语<––研发的系统。

对术语的要求:

  1. 对于通用语言来说:模型和代码必须统一,比如模型定义了Goods,那么代码中要有相应的类Goods
  2. 通用语言需要讨论:我们在技术讨论中应该尽量用简短的通用语言来描述
  3. 要有不断完善的文档简短的文档来维护我们的通用语:
    1. 我们可以通过简短类图+类图备注进行描述,并且文档应该作为代码和模型的叩痛补充;
    2. 在模型演进中通过通用语言的完善来更迭文档;