1.0 KiB
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_proxy、make_model_proxy_shared 与 model_proxy_view 分别承载独占、共享和非拥有 Model 生命周期,同时把 proxy 解引用目标映射到该 Model 唯一的 Private;实体公开类不实现 facade 转发函数。
Builder 使用 set<Concurrent_Storage, Tag>(...),最终模型使用 write<Concurrent_Storage, Tag>(...) 和 read<Concurrent_Storage, Tag>(...)。Tag 先定位注册项,再由注册项的 Value_Type 实例化对应存储。