34 泛化建模入门:面对抽象业务知识,如何建模?
你好,欢迎来到第 34 讲。
在我们的建模工具箱中,已经有了聚合、实体、值对象和限定等强大的工具。它们帮助我们处理业务的边界、身份、描述和关联。
但是,真实世界的业务,还存在一种常见但棘手的情况:一些领域概念,虽然属于同一个“大类”,但它们在具体的行为和属性上,又存在着显著的差异。
比如:
- 支付方式:可以是“微信支付”、“支付宝支付”、“银行卡支付”。它们都是“支付”,但与外部系统的交互方式、手续费计算规则完全不同。
- 商品:可以是“实体商品”(需要物流)、“虚拟商品”(如电子书,需要授权)、“服务类商品”(如咨询)。
- 优惠活动:可以是“满减”、“折扣”、“赠品”。
这些概念,都具有一种“既有共性,又有特性”的结构。面对这种结构,我们该如何建模?
DDD 为我们提供的“上层武功”,就是泛化(Generalization)。它是一种处理业务中抽象和分类知识的建模技术。本讲,我们就来入门泛化建模,看看它如何帮助我们驯服这类复杂的业务场景。
一、从一个“臃肿”的设计说起:万能的优惠活动
场景:我们的电商系统,需要支持多种优惠活动。