用途:当同一操作存在多种可互换算法、需要在运行时选择(例如支付提供商、导出格式),或对类型字符串的 switch/match 不断增长、希望新增变体时无需修改选择代码,可使用本技能在 Symfony 中实现策略模式。
主要能力与用法:定义策略接口,为每个策略提供 supports() 方法或一个键;通过接口或各类上的 #[AutoconfigureTag] 为所有实现打标签;用 #[AutowireIterator] 注入并按顺序逐个尝试,或用 #[AutowireLocator] 按键获取单个策略;在评估顺序重要时设置优先级,并注册回退策略;对每个策略单独测试,并用假对象测试选择器。
输出契约:接口及其带标签的实现;选择器(含顺序与回退);每个策略的测试以及无匹配情况的测试。
限制与护栏:无策略支持输入时选择器应显式失败;策略应保持无状态且彼此独立;只有两个且不会增长的变体不需要该模式,用 match 即可。
其他:执行姿态与风险控制见本文件,深入实现细节时打开 references(reference.md)。官方文本暂未提供。