Head First Design Patterns読了

Head First Design Patternsを読み終わりました。この本も去年の11月頃に手をつけたのにしばらく放置しており、読み終わるのに長くかかってしまいました。もう少し本を読んでいくペースを上げていきたいところです。

概要

GoFの23のパターンのうち、核となる14のパターンを取り上げています。残りの9つについては、付録で2ページずつ割いて紹介されているだけで、全てのGoFパターンを網羅している増補改訂版Java言語で学ぶデザインパターン入門と比べると劣ってしまう部分かもしれません。GoF以外のパターンとして、MVCについてもCompound Patternの章で取り上げられています。

コードはJavaで書かれており、Head First Javaを読み終わった読者を想定している部分もあるため、先にそちらを読んでおくといいと思います。

Head Firstシリーズ恒例ですが、擬人化インタビューや対談が途中に入り、面白おかしく学ぶことができます。特に類似点のあるデザインパターンを対談させて、違いを洗い出させる対談は読み応えがあります。

各章の流れ

各章は概ね、順番が前後したりしますが、パターンが必要になる場面を取り上げる→まずはパターンを使わずに実装→パターンを使って書き直し→パターンの説明と定義→最後にコードで実装という流れになっています。
場面としては、Strategyパターンではアヒルゲームで各種アヒルにfly()やquack()というメソッドを持たせる時、Decoratorパターンではコーヒーショップでトッピングを加えていく時などがあります。こういう時に使えばいいのかということや、パターンを使うことでいかに改善されるかが解りやすいです。

感想

Big Nerd RanchのAndroid本でSingletonが出てきたことや、CourseraのAndroid SpecializationのコースGoF本が推薦本に入っていることもあり読んでみたのですが、色々なパターンがあり、よく考えられているなと思いました。
ただ、1回通して読んだだけでは、もうどういうパターンだったか忘れてしまったパターンもけっこう出てしまっているので、余裕があれば結城さんの方の本も読んでみたいと思います。

この本の最後の方で、デザインパターンは"Big gun"であり、あくまでツールの一つなので、使う必要がない場合は使わないということが書かれています。適切な場面で適切な設計ができ、適切なコードを書けるのが理想でしょうが、そこを目指して勉強していきたいです。

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

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