Implement Strategy Pattern to Character Class

HeadFirstの本を読んでStrategy Patternを覚えました。


O'Reilly Japan - Head Firstデザインパターン

O’Reilly Japan – Head Firstデザインパターンhttps://www.oreilly.co.jp/books/4873112494/初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead Firstシリーズのデザインパターン編。刺激的なレイアウト、思わず膝を叩く見事なたとえ、引き込まれる小話、楽しいクイズやパズルで飽きることなく読み進むことができます。複雑難解なデザインパターンの概念が面白いほどよくわか…

 

色んなひよこを作るとき副作用無しで動きを柔軟に変更できるのが良いです。
メモ

  1. 実装に対するプログラミングより、インターフェース/スーパータイプに対するプログラミングをするべき。
  2. サブクラスに動きの挙動を加えると隠蔽されて再利用できなくなる。

 

  • 自分のプロジェクトで使ってみた。
    スーパークラスにinterface型IFlyBehaviorを足す
    flyBehaviorのプロパティだとUnityが落ちるのでSetPerformFlyメソッドで実装

下は動かなかった

 
 
interfaceとinterfaceを継承したクラスを作成
.csは三つ作成
Screen Shot 2015-05-04 at 19.28.26

 
IFlyBehavior.cs

 
FlyNoWay.cs

 
FlyWithWings.cs

 
 
実装に対するプログラミング
とりあえず爆弾ひよこを作ってみる
3Dモデルと飛ぶ振る舞いの細かい中身は後にしてログだけ出す。
動的に飛ぶ振る舞いを変えれるようにAwake,Startで変更

 
UnityEditorで確認
FlyWithWings,FlyNoWayが呼ばれました^^
もし爆発振る舞いが欲しければChickManagerに追加すればよい、その時他のサブクラスには影響は無いですね。
Console

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">