组合示意
组合示意
spec = 已支付.and(金额超过(1000)).and(非(已退款))
if spec.is_satisfied_by(order): ...| 适用 | 规则需要在多处复用、需要组合或需要翻译成查询 |
|---|---|
| 注意 | 复杂规则组合要关注可读性与索引友好性 |
查询翻译注意点
查询翻译注意点
内存校验与数据库查询两条路径要共用同一规约定义:
spec = 已支付.and(金额超过(1000))
- ORM 侧:把规约翻译成 WHERE 条件(索引友好)
- 内存侧:同一规约用于单元测试与快速校验
两者输出必须一致,用对照测试锁定差异