「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本


前から気になっていた「デザインパターン」というものを勉強してみました。

それぞれのパターンの実装は非常に単純でした。しかし、「利用元のプログラムを変更せずに動作を変える」等、柔軟な動作が出来ることを、この本を通じて学びました。

この本では、GoF (Gang of Four)のデザインパターン23種類の中から、利用シーンが多いもの13種類について解説されています。また、Head Firstシリーズ特有の「章立てのストーリー&演習」で、実際に手を動かしながら読み進めるので、理解も深まったのではないかと思います。特に、ストーリーが良く出来ていて「パターン=ストーリー」と結びつけることが出来たのが、この本を選んで一番良かった点かと思います。

例えば...

  • Strategy Pattern
    • 振る舞いを動的に変更させる。
    • → 飛ばないアヒルの模型にロケットを積んで飛ばせる。
  • Observer Pattern
    • 状態の変更を通知する。
    • → 新聞の定期購読
  • Decorator Pattern
    • オブジェクトを装飾する。(元クラスを変更せずに、機能を追加する。)
    • → コーヒーのトッピング。トッピング後の価格を算出する。
  • Factory Method Pattern
    • オブジェクト生成を疎結合化させる。
    • → ピザ屋のフランチャイズ。店の場所によって、ピザの材料を変える。
  • Singleton Pattern
    • 唯一のオブジェクトを生成する。
    • →チョコレート工場のボイラー
  • Command Pattern
  • Adapter Pattern, Facade Pattern
    • インターフェースを変換し、連携可能にする。
    • → コンセントの電圧変換コネクタ
  • Template Method Pattern
    • アルゴリズムをカプセル化する。
    • → コーヒーと紅茶のレシピ。
  • Iterator Pattern, Composite Pattern
    • オブジェクトのコレクション管理を抽象化する。
    • → パンケーキ屋と食堂の合併。それぞれのお店のメニュー管理方法の差異を吸収する。
  • State Pattern
    • 状態によって、振る舞いを変化させる。
    • → ガムボールマシン。お金・残りガム数によって、動作を変更させる。
  • Compound Pattern
    • パターンをパターン化する。
    • MVCモデル

という感じです。

これだけ見ても多分、分からないですよね★
気になった方は、一度この本を手にとって見てください。デザインパターン初心者にはおすすめです。