32 限定建模:用 “限定” 简化一对多关联,降低系统复杂度
你好,欢迎来到第 32 讲。
在前面的课程中,我们已经学习了聚合、实体和值对象,并掌握了如何通过“只引用 ID”和“将实体降级为值对象”等技巧来简化模型之间的关联。
但是,在领域建模中,我们还会遇到一类非常棘手,但也极其常见的场景——具有上下文的“一对多”关联。
什么是“具有上下文的‘一对多’关联”?
简单来说,就是一个对象 A 关联到对象 B 的集合,但我们通常不关心 B 的所有实例,而只关心在某个特定“上下文”或“资格”下的那一个B。
这种场景如果处理不当,很容易导致模型臃肿、查询效率低下。而 DDD 为我们提供了一个精巧而强大的模式来应对它——限定(Qualifier),有时也被称为限定关联(Qualified Association)。
本讲,我们将深入这个高级建模技巧。你将学会什么是“限定”,它如何将一个复杂的一对多关联,巧妙地转化为一个简单的一对一关联,从而极大地降低模型的复杂度。
一、令人头疼的“一对多”:从一个例子说起
让我们来看一个经典的银行账户场景。
一个客户(Customer)可以拥有多种不同类型的账户(Account),比如: