ストラテジーパターン
GoFのデザインパターンの1つ。アルゴリズムの集まりを定義し、それぞれを共通のインターフェースを持つクラスとしてカプセル化して、実行時に交換できるようにする。
古典的な例は、SortStrategy を実装した複数のソートアルゴリズム(QuickSort、MergeSort、HeapSort)である。クライアントはストラテジーへの参照を持ち、処理を委譲する。クライアントを変更せずに差し替えられる。
第一級関数を持つ言語では、ストラテジーは関数を引数に渡すだけのことが多い(list.sort(key=...))。C++やJavaでは、クラスとして現れる。このパターンが生きるのは、アルゴリズムが単純でなく、固有の状態を持つ場合である。