まとめ
パターン比較レビュー
パターン | 適用条件 | 強み | 注意点 | よく使うシーン |
---|---|---|---|---|
State | 状態に応じて処理を変えたい | 責務分離・状態遷移の明示化 | 状態が少ないと過剰設計になることも | ステップ制御、ワークフロー、UI モード切替 |
Strategy | 状態を外部から渡して処理を変えたい | 処理の差し替えに強い | 状態遷移は別に制御が必要 | アルゴリズム切り替え、割引処理 |
Command | 状態ではなく操作内容の違いを扱う | 実行履歴・Undo/Redo がしやすい | 状態遷移や制御には向かない | バッチ処理、キュー、操作履歴 |
まとめと選び方の指針
- 状態ごとの処理分岐が増えてきたら →
State
パターンを検討 - 状態遷移は不要で処理だけ変えたいなら →
Strategy
- 実行命令や履歴の扱いが主眼なら →
Command
実際の設計会話での使い分けヒント
- この状態ごとの処理、
State
パターンで分けたらテストもしやすくなりますよ - 処理自体は外から差し替えるだけなら
Strategy
でも良さそうですね - 状態管理というより操作履歴を扱いたいなら、
Command
パターンで持たせるのもあり