Files
Aethera/kernel/kernel/include/model/design.md
T
2026-09-02 11:09:06 +08:00

1.0 KiB

Model 设计

Storage_Registration<Value, Concurrent_Storage, Tag = Value> 注册一份业务值存储。默认情况下值类型本身就是 tag;同一值类型需要注册多份时,调用方必须提供具有业务语义的第三参数 tag。

Model_Layer 只组合注册表,最终 Def::Private 根据完整注册表创建唯一的 Tagged_Storage_Set。同一 tag 重复注册属于编译期错误。值类型不再根据 Layer 推导,也不存在兼容分支或默认空值类型。

跨模块 facade 直接声明消费方所需的 Private 能力。make_model_proxymake_model_proxy_sharedmodel_proxy_view 分别承载独占、共享和非拥有 Model 生命周期,同时把 proxy 解引用目标映射到该 Model 唯一的 Private;实体公开类不实现 facade 转发函数。

Builder 使用 set<Concurrent_Storage, Tag>(...),最终模型使用 write<Concurrent_Storage, Tag>(...)read<Concurrent_Storage, Tag>(...)。Tag 先定位注册项,再由注册项的 Value_Type 实例化对应存储。