问题域/PD-106

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() 调用