結城浩『Java言語で学ぶデザインパターン入門』(SB Creative)読んでみた


こんにちは、ふぎとです。

今回は結城浩さんの本で、デザインパターンを学んでみ
ました。

「デザインパターン」とは

この本を手に取ったきっかけは、情報系の友人からの薦
めがあったからでした。「実務で絶対に役に立つから」
という太鼓判を鵜呑みに、おっかなびっくり手にとった
次第です。

まず浮かんだのは、「デザインパターンってなに?」と
いうこと。これは本書冒頭に説明がありました。

"プログラミングを行っていると、以前と同じことを繰
 り返しているなあ、と気づくときがあります。経験が
 増すにつれ、そのような「パターン」(….)を次の開発
 に当てはめていくことができるようになります。 
 Erich Gamma, Richard Helm, Ralph Johnson, John
 Vlissidesの4人が、そのような開発者の「経験」や
 「内的な蓄積」としてのパターンを
 
 「デザインパターン」

 という形に整理しました。”(「はじめに」より)

要するに、デザインパターンとは「先人の知恵」のよう
なもの。また、開発者同士の「共通言語」のようなもの、
だということです。因みに、考案した4人はthe Gang of
Four(GoF)と呼ばれているらしいです。つよそう。

本書の章立て

本書はそのGoFが定めた23個のデザインパターンをひとつ
ずつ、Javaプログラムで実例を示しながら紹介していま
す。章立ては以下の通り。

 1. Iterator 1つ1つ数え上げる
 2. Adapter 一皮かぶせて再利用
 3. Template Method 具体的な処理をサブクラスにまかせる
 4. Factory Method インスタンス生成をサブクラスにまかせる
 5. Singleton たった1つのインスタンス
 6. Prototype コピーしてインスタンスを作る
 7. Builder 複雑なインスタンスを組み立てる
 8. Abstract Factory 関連する部品を組み合わせて製品を作る
 9. Bridge 機能の階層と実装の階層を分ける
 10.Strategy アルゴリズムをごっそり切り替える
 11.Composite 容器と中身の同一視
 12.Decorator 飾り枠と中身の同一視
 13.Visitor 構造を渡り歩きながら仕事をする
 14.Chain of Responsibility 責任のたらい回し
 15.Facade シンプルな窓口
 16.Mediator 相手は相談役1人だけ
 17.Observer 状態の変化を通知する
 18.Memento 状態を保存する
 19.State 状態をクラスとして表現する
 20.Flyweight 同じものを共有して無駄をなくす
 21.Proxy 必要になってから作る
 22.Command 命令をクラスにする
 23.Interpreter 文法規則をクラスで表現する

自分が取り組んだこと

・サンプルとして掲載されたプログラムを自分で書き写
 し、実行した
 →→23のデザインパターンそれぞれについて、期待通り
  に動かすことができた
・どのクラスがどんな役割をになっているのか、解説を
 読んで理解に努めた

今後やりたいこと

・やり残した、章末の練習問題を解き切る
・Javaのプログラムが動く仕組みについて勉強する

最後にひとこと

もし僕の記事に対しての補足や、「今後やりたいこと」
に対するオススメ本などありましたら、ぜひコメントで
いただけると嬉しいです!

では今日はこの辺で。ふぎとでした。