Mixin 架构模式
Mixin Architecture Pattern
通过 Mixin 多继承组合实现关注点分离的模块化架构
子问题
1.功能模块拆分与职责划分
2.Mixin 间依赖声明与类型提示
3.共享状态的一致性管理
4.初始化顺序与生命周期
5.接口契约与 TYPE_CHECKING
6.延迟初始化与 Mixin 方法的执行前置条件保证
7.dataclass 字段与 Mixin 隐式依赖的协调
各项目的解法1 solutions
Signals
横向对比
| 维度 | RAG-Anything |
|---|---|
| 组合方式 | Python 多继承 Mixin + @dataclass,3 个 Mixin 扁平组合 |
| 依赖声明 | TYPE_CHECKING 条件导入 + 类属性注解 + 方法存根 |
| 共享状态 | 隐式共享 self(config/lightrag/logger),无依赖注入 |
| 初始化策略 | @dataclass __post_init__ + 延迟初始化 _ensure_lightrag_initialized |
| 模块粒度 | 按功能域拆分:Query(800行)/Processor(1860行)/Batch(300行) |
最佳实践
1.每个 Mixin 只负责一个功能域
2.使用 TYPE_CHECKING 声明跨 Mixin 依赖
3.主类通过多继承组合所有 Mixin
4.用方法存根(def method(): ...)声明跨 Mixin 方法依赖
5.主类用 @dataclass 声明字段,Mixin 只定义方法不定义字段
6.延迟初始化方法集中在主类,Mixin 通过 await self._ensure_initialized() 调用