戦略デザインパターン、多くの場合、それらが不足している言語のファーストクラスの機能の代替としてみなされています。
たとえば、機能をオブジェクトに渡したいとします。Javaでは、目的の動作をカプセル化する別のオブジェクトをオブジェクトに渡す必要があります。Rubyなどの言語では、機能自体を匿名関数の形式で渡すだけです。
しかし、私はそれについて考えていたので、多分Strategyは単なる匿名関数が提供する以上のものを提供すると決めました。
これは、オブジェクトがメソッドの実行期間とは無関係に存在する状態を保持できるためです。ただし、匿名関数自体は、関数の実行が終了した時点で存在しなくなる状態のみを保持できます。
ファーストクラスの関数をサポートするオブジェクト指向言語では、関数を使用するよりも戦略パターンに利点がありますか?