Strategyパターン

 

最近、変更が容易なプログラムの必要性を実感しているので、デザインパターンをなるべく自分の言葉でまとめてみようと思う。

まずはStrategyパターンについて

概要

GoFのカタログによると

 アルゴリズムの集合を定義し、各アルゴリズムカプセル化して、それらを交換可能にする。Strategyパターンを利用することで、アルゴリズムを、それを利用するクライアントからは独立に変更することができるようになる。

 

一部のアルゴリズムが異なるようなクラスの作成を容易に行えるようになって便利ということ。

将来変更・追加がアルゴリズムの部分に起きそうな場合、デザインパターンの原則に従い具体的なアルゴリズムの実装はカプセル化しておく。

クライアントごとに利用するアルゴリズムを選べるようにもなり便利である。

クラス図

f:id:Kleisli:20161224064036p:plain

コンテキストごとのアルゴリズムの違いは、具体的なアルゴリズムの呼び出しをStrategyクラスに移譲することで実現している

 

感想

githubリポジトリを追加して、具体的に実装してみた。

GitHub - S2P/design_pattern

Javaに慣れる意味でも他のパターンについても実装してみようと思う。次はDecoratorパターンあたりにするかもしれない。

 

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

 

 以前捻挫したGoFに再挑戦したが、オブジェクト指向に慣れたのか以外に分かりやすく感じた。

サンプルコードが実践的であること、他の入門書にはない細かなメリット・デメリットについての記述があるのも良かった。

利用例はさっぱりわからなかったが特にきにする必要もないだろう