SuperAPI AI 工具集

aggregate-patterns

通用与其它

查看项目

更新于 10-16 04:28

技能介绍

用途:在领域驱动设计(DDD)中设计聚合,明确一致性边界与不变量强制方式。

主要能力:定义事务一致性边界;跨相关实体强制业务不变量;设计聚合根及其子实体;处理聚合之间的引用;根据性能权衡优化聚合规模。

核心规则:聚合根控制访问,外部代码只引用聚合根;一个事务只操作一个聚合;聚合之间按 ID 引用,不持有对象引用;不变量由根统一保证。

文档给出的示例以 Python 数据类展示聚合根,包含 uuid7 生成的 id、按 ID 引用的 customer_id、私有 _items 列表与 status,并通过 add_item 校验上限(MAX_ITEMS = 100)与状态可修改性(仅 draft 可改)。完整实现见 aggregate-root-template.py。

关键取舍:聚合应保持较小(建议少于 20 个子实体,更大则拆分);跨聚合引用始终用 ID;一致性在聚合内即时,跨聚合最终一致;领域事件在根中收集、持久化后再发布。聚合规模细则见 aggregate-sizing.md。

禁止的反模式:用对象引用其他聚合(如 customer: Customer,应改为 customer_id: UUID);在一个事务中修改多个聚合(如 order.submit() 后再 inventory.reserve(items),应改用领域事件);暴露可变集合(应返回 tuple(self._items));无界集合(如 orders: list[Order])。

相关技能:domain-driven-design、distributed-locks、idempotency-patterns。参考资料涵盖聚合规模、不变量强制与最终一致性。

限制:本技能的具体安装方式、平台支持、收费与价格信息暂未提供;示例中的 Money、DomainError、OrderItem 等类型定义未在本资料中给出。