Eyes, JAPAN Blog > Strategyパターン

Strategyパターン

makuta

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

Strategyとは「戦略」という意味です。戦う時の作戦、軍隊を動かすときの方策や問題を解くときの方法などの意味合いを持っています。プログラミングの場合は「アルゴリズム」という意味になるでしょう。
Strategyパターンはアルゴリズムをごっそりと切り替えるための(実行時に選択することができる)パターンです。Bridgeパターンと似ているような気もしますが、Strategyパターンは振る舞い(クラスが何かをする、クラスかオブジェクトの通信方法に特徴づけるもの)に対するパターンで、Bridgeパターンは構造(繋いだり組み立てたりする、裏方のようなもの)に対するパターンです。

普通にプログラミングしていると、メソッドの中に溶け込んだ形でアルゴリズムを実装してしまうことがよくあります。例えば、if文などで分岐させることで、アルゴリズムを変更するような方法です。Strategyパターンでは、戦略部分(アルゴリズム)を意識して別クラスとして作成するようにしていきます。戦略部分を別のクラスとして作成しておき、戦略を変更したい場合には、利用する戦略クラスを変更するという方法で対応します。
例えば、メモリが少ない環境ではスピードは遅いが省メモリの戦略を使いメモリが多い環境ではスピードは速いがメモリを食う戦略を使うといったこともできます。

Strategyパターンを利用することで、メソッドの中に溶けこんだ形のアルゴリズムより、柔軟でメンテナンスしやすい設計にすることができます。

Comments are closed.