通用语言:就是能够简单、清晰、准确描述业务涵义和规则的语言。
限界上下文:用来封装通用语言和领域对象,提供上下文环境,保证在领域之内的一些术
语、业务相关对象等(通用语言)有一个确切的含义,没有二义性。
3.3.1 通用语言
通用语言是团队统一的语言,不管你在团队中承担什么角色,在同一个领域的软件生命周期里都
使用统一的语言进行交流。那么,通用语言的价值也就很明了,它可以解决交流障碍这个问题,
使领域专家和开发人员能够协同合作,从而确保业务需求的正确表达。
这个通用语言到场景落地,大家可能还很模糊,其实就是把领域对象、属性、代码模型对象等,
通过代码和文字建立映射关系,可以通过 Excel 记录这个关系,这样研发可以通过代码知道这个
含义,产品或者业务方可以通过文字知道这个含义,沟通起来就不会有歧义,说的简单一点,其
实就是统一产品和研发的话术。
直接看下面这幅图(来源于极客时间欧创新的 DDD 实战课):
image.png
3.3.2 限界上下文
通用语言也有它的上下文环境,为了避免同样的概念或语义在不同的上下文环境中产生歧义,
DDD 在战略设计上提出了“限界上下文”这个概念,用来确定语义所在的领域边界。
限界上下文是一个显式的语义和语境上的边界,领域模型便存在于边界之内。边界内,通用语言
中的所有术语和词组都有特定的含义。把限界上下文拆解开看,限界就是领域的边界,而上下文
则是语义环境。
通过领域的限界上下文,我们就可以在统一的领域边界内用统一的语言进行交流。
3.4 实体和值对象
3.4.1 实体
实体 = 唯一身份标识 + 可变性【状态 + 行为】
DDD 中要求实体是唯一的且可持续变化的。意思是说在实体的生命周期内,无论其如何变化,其
仍旧是同一个实体。唯一性由唯一的身份标识来决定的。可变性也正反映了实体本身的状态和行
为。
实体以 DO(领域对象)的形式存在,每个实体对象都有唯一的 ID。我们可以对一个实体对象进
行多次修改,修改后的数据和原来的数据可能会大不相同。
但是,由于它们拥有相同的 ID,它们依然是同一个实体。比如商品是商品上下文的一个实体,通
过唯一的商品 ID 来标识,不管这个商品的数据如何变化,商品的 ID 一直保持不变,它始终是
同一个商品。
3.4.2 值对象
值对象 = 将一个值用对象的方式进行表述,来表达一个具体的固定不变的概念。