关于 strategy-pattern
面向 Symfony 开发的策略模式技能,指导将可互换算法拆分为独立实现,并在运行时选择。涵盖服务标记、注入、优先级、回退策略和测试。
主要功能
- 01定义策略接口与实现
- 02通过 AutowireIterator 或 AutowireLocator 注入
- 03配置优先级与回退策略
- 04测试单个策略和选择器
适用场景
- 01按运行时条件选择支付提供方
- 02在多种导出格式间切换
- 03替换不断扩大的类型分支
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill strategy-pattern安装后在 Claude Code 中输入/strategy-pattern确认已加载。
附带文件reference.md
详细介绍
策略模式(Symfony)
适用场景
- 某项操作有多种可互换的算法,需要在运行时选择,例如支付提供商或导出格式。
- 按类型字符串执行的
switch或match不断增大。 - 添加新变体时,必须避免修改负责选择它们的代码。
默认工作流
- 定义策略接口,并为每种策略提供
supports()方法或一个键。 - 通过接口或各个类上的
#[AutoconfigureTag]为每个实现添加标签。 - 注入这些实现:使用
#[AutowireIterator]按顺序逐一尝试,或使用#[AutowireLocator]按键获取。 - 在评估顺序很重要时设置优先级,并注册一个回退策略。
- 单独测试每种策略,并使用伪对象测试选择器。
防护措施
- 当没有策略支持输入时,选择器应明确失败。
- 保持策略无状态,且彼此独立。
- 对于不会增加的两种情况,无需使用此模式:使用
match即可。
渐进式展开
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,再打开参考资料。
输出约定
- 接口及其带标签的实现。
- 选择器,包括其顺序和回退策略。
- 每种策略的测试,以及无匹配项时的测试。
参考资料
reference.md
评论
支持 Markdown