工厂模式与组件注册
Factory Pattern & Component Registry
通过工厂模式实现组件可插拔,统一注册和实例化多种后端实现
子问题
1.多后端统一抽象
2.配置驱动的实例化
3.单例复用避免重复创建
4.新后端的零侵入扩展
5.时间字段污染缓存键导致伪重复实例
6.不同后端构造签名不统一时的工厂变体选择
7.工厂方法中的跨组件依赖注入
各项目的解法1 solutions
Signals
横向对比
| 维度 | MemOS |
|---|---|
| 注册方式 | ClassVar[dict] 静态映射表,14 个 Factory 统一协议 |
| 配置校验 | 双层 Pydantic ConfigFactory,model_validator 自动转换 config dict 为强类型 |
| 单例策略 | WeakValueDictionary + MD5(config_json) 缓存键,时间字段自动过滤 |
| 扩展机制 | 映射表加一行 + 实现 Base 类,零侵入 |
| 工厂变体 | 标准映射 / if-elif 分支 / 依赖注入 / 便捷方法四种变体共存 |
最佳实践
1.backend_to_class 映射表集中管理
2.from_config 工厂方法统一入口
3.singleton_factory 装饰器确保单例
4.WeakValueDictionary 自动回收无引用实例避免内存泄漏
5.Pydantic model_validator 在配置加载阶段完成类型转换和校验
6.Factory 继承 Base 抽象类使工厂本身可作为类型注解