SuperAPI AI 工具集

m09-domain

编程与开发

查看项目

更新于 10-15 10:31

技能介绍

用途

m09-domain 是 rust-skills 中的领域建模技能,定位为设计选择层(Layer 2)。它的核心问题是:某个概念在领域中扮演什么角色?在动手写代码之前,先理解这个概念是实体还是值对象、需要维护哪些不变量、聚合边界在哪里。

主要能力

技能提供领域概念到 Rust 模式的映射:

  • 实体(Entity):struct + Id,拥有唯一身份,所有权上表现为 Owned、唯一标识。
  • 值对象(Value Object):struct + Clone/Copy,可共享、不可变。
  • 聚合根(Aggregate Root):struct 拥有子对象,形成清晰的所有权树。
  • 仓储(Repository):trait,抽象持久化。
  • 领域事件(Domain Event):enum,捕获状态变化。
  • 服务(Service):impl 块或自由函数,无状态操作。

技能还给出思考提示:创建领域类型前先问概念的身份是什么(需要唯一身份则用实体加 Id 字段,按值可互换则用值对象加 Clone/Copy);必须维护哪些不变量(始终有效则用私有字段加经过验证的构造函数,转换规则则用类型状态模式);谁拥有这份数据(单一所有者用 owned 字段,共享引用用 Arc/Rc,弱引用用 Weak)。

使用方式

技能通过向上追溯和向下追溯来衔接设计决策与实现。向上追溯领域约束(Layer 3):例如问“如何建模 Transaction”,需要追问哪些领域规则约束交易,检查 domain-fintech(审计、精度要求)以及业务相关方关注的不变量。向下追溯实现(Layer 1):建模为实体时对应 m01-ownership 的 Owned、唯一,以及 m05-type-driven 的 Newtype 用于 Id;建模为值对象时对应 m01-ownership 的 Clone/Copy 可行,以及 m05-type-driven 的构造时验证;建模为聚合时对应 m01-ownership 的父对象拥有子对象,以及 m02-resource 考虑在聚合内共享时使用 Rc。

技能提供模式模板:值对象用 struct Email(String) 加 new 构造函数进行验证;实体用 struct UserId(Uuid) 与 struct User,并为 User 实现 PartialEq 按 id 比较身份相等;聚合用模块边界 mod order 封装 Order,通过 add_item 等方法强制聚合不变量。

适用场景

适用于在 Rust 中采用领域驱动设计(DDD)进行领域建模的场景,包括识别实体与值对象、划定聚合边界、定义仓储 trait、表达领域事件、组织无状态服务,以及处理业务规则与不变量。

限制

资料未提供该技能的具体安装命令、运行环境要求、收费方式或平台信息,暂未提供。技能内容以设计指导与模式模板为主,不包含可直接运行的完整示例工程。