🎮

デザインパターンについて(Strategy編)

2021/09/28に公開

Strategy パターン

ココでは Strategy パターンについて書いていく。
目次: https://zenn.dev/firedial/articles/f7b1a84ef2c6b8

Strategy パターンとは

Strategy パターンは一連のアルゴリズムを定義し、それぞれをカプセル化してそれらを交換可能にします。 Strategy パターンによって、アルゴリズムを使用するクライアントとは孤立して、アルゴリズムを変更できます。

状況

アヒルを(プログラム上で)飛ばすことを考える。

クラス図

コードと説明

コードは下記を参照。
https://github.com/firedial/design_pattern/tree/master/Strategy

抽象クラス Duck には飛ぶという振る舞い(FlyBehaviorInterface)だけ定義し、実際の動作は FlyBehaviorInterface を継承した実装クラス(FlyNoWay, FlyWithWings)で実装する。

Duck に setFlyBehavior というメソッドを定義し、動的に飛ぶという動作を変更することができる。

Discussion