strategy-pattern について
Symfony 開発者向けの Strategy Pattern スキルです。交換可能なアルゴリズムの分離と実行時の選択を案内し、サービスのタグ付け、注入、優先順位、フォールバック、テストを扱います。
主な機能
- 01ストラテジーインターフェースと実装の定義
- 02AutowireIterator または 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)
使用する場面
- 決済プロバイダーやエクスポート形式など、1つの操作で複数のアルゴリズムを実行時に切り替える場合。
- 型文字列に対する
switchやmatchが増え続けている場合。 - 選択処理のコードを編集せずに新しいバリエーションを追加する必要がある場合。
標準的なワークフロー
supports()メソッドを持つインターフェース、または各ストラテジーのキーを定義します。- インターフェースまたは各クラスに
#[AutoconfigureTag]を指定し、すべての実装にタグを付けます。 - 順番に試す場合は
#[AutowireIterator]で、キーで取得する場合は#[AutowireLocator]で実装を注入します。 - 評価順が重要な場合は優先度を設定し、フォールバックストラテジーを登録します。
- 各ストラテジー単体と、フェイクを使った選択処理をテストします。
ガードレール
- どのストラテジーも入力を処理できない場合、選択処理は明示的に失敗します。
- ストラテジーはステートレスに保ち、互いに依存させません。
- 増える見込みのないケースが2つだけなら、このパターンは不要です。
matchで十分です。
段階的な情報開示
- 実行時の指針とリスク管理には、このファイルを使用します。
- 実装の詳細を深く確認する必要がある場合は、リファレンスを開きます。
出力要件
- インターフェースと、タグ付けされたその実装。
- 順序とフォールバックを含む選択処理。
- 各ストラテジーのテストと、一致するものがない場合のテスト。
リファレンス
reference.md
コメント
Markdown 対応