投稿数 585
公開から 2940

ストラテジーパターン


Categories: programming

ストラテジーパターン

振る舞い(戦略)自体をクラス化する。

変化する部分を分離する

実装に対してではなくインターフェイスに対してプログラミングする。

どういうこと?

実際はスーパータイプに対するプログラミングを意味します。

かもクラスではなく、振る舞いの実装のクラスを作成する。

前はどちらも実装に依存していました。 ふん、、

新しい設計では。。。 ハードコーティングしない

鴨の振る舞いを実装 二つの振る舞いクラス flyBehaviorとQuackBehaviorがありますね、、

振る舞い自体がもの=オブジェクトになります。いいんです!

インターフェイスを噛ませるってことかな?

インスタンス化するときに振る舞いをわたす。 という設計。。。

is-a has-a

継承よりもコンポジション

継承はis-aの関係 is-aとは A is a subclass of another class of B. サブクラスってことですね 。。a-is、じゃだめなの?

いや設計する時に B(大元)is A(作りたいもの) だから Bのスーパークラスを作ろう!って順番になるのか。 設計する時なんだな。 B has A ってことね。

コンポジション(ha-a)はオブジェクトのなかにほかのオブジェクトを持つということになる

開発後の保守のために。。

用語 具象実装クラス = 実態のクラス(抽象クラスではない)

要は

コンポジション的な感じで振る舞いオブジェクトを渡してあげる的な感じかな?

思ったこと うーん。よくわからん。 こういうの作る時どうしたらいいか、自分で考えながらやらないといかん。