Amanjackのブログ

プログラミング初心者、FX初心者の成長日記

<復習>Java言語で学ぶデザインパターン入門

 

 

Java言語の文法を一通り勉強し、次に読む本としてデザインパターンのおすすめ書籍を調べたら真っ先に本書が上がってきました。

正直に言って、Javaの文法を一通り勉強した程度の実力では、半分くらいしか理解できませんでした。

読むのもとても大変で章末問題を飛ばしても読み終わるのに30時間ほど掛かりました。

なんとか最後まで読み切りましたが、もう少し経験を増やしてから再度読み直して理解できなかった部分を理解したいと思っています。(多分読まないけど)

 

読者のレベルもある程度は必要で、コードの解説がメインの話なのでコードを理解する能力は必要です。

コード自体はそこまで難しくないので時間を掛ければ理解できます。

ただ、コードを読んだだけで終わりになってしまった感はあります。

私もまだピンと来ていないので、実際に業務で使って理解を深めていくしかないと思っています。

とりあえず、本書を読んでざっくりの理解です。

 

具体的にどこが理解できていなかったと言うと、そのパターンがなんのために利用されるのか、そのパターンにはなんの意味があるのか、の部分が理解できませんでした。

なんとなくは分かるのですが、実務に落とし込んで考えることができなかったです。

なので、実際に業務でぶち当たることしかないなぁと言った感じです。

 

雰囲気はつかめたし、業務上のコードや他の本を読んでいてもちょいちょい出てくるワードがあったので読んでおいて良かったとは思っています。

ただ、内容が難しく手をつけるのは少し早かっただけです。

 

Java言語で学ぶデザインパターン入門

そもそもデザインパターンとはなんでしょうか。

本書では「部品がどのように組み立てられているか、個々の部品がどのように関連して大きな機能を果たすのかを表現したもの」と言われています。

 

the Gyang of Four

本書はthe Gyang of Four、または GoF と呼ばれている23種類のデザインパターンを一つ一つ取り上げてわかりやすく説明してくれます。

 

 

第1章 Iterator パターン

複数の要素が集まっている中から要素を一つ一つ取り出していくパターンです。

 

第2章 Adapter パターン

異なるインタフェース(API)を持つクラスの間をつなげるパターンです。

 

第3章 Template Method パターン

スーパークラスで処理の骨組みを定め、具体的な処理をサブクラスで行うパターンです。

 

第4章 Factory Method パターン

スーパークラスインスタンスの作り方の骨組みを定め、具体的な作成そのものはサブクラスで行うパターンです。

 

第5章 Singleton パターン

インスタンスが一つしか存在しないパターンです。

 

第6章 Prototype パターン

ひな型となるインスタンスをコピーしてインスタンスを作るパターンです。

 

第7章 Builder パターン

複雑な物を段階を踏んで組み立てていくパターンです。

 

第8章 Abstract Factory パターン

工場のように部品を組み合わせてインスタンス生成を行うパターンです。

 

第9章 Bridge パターン

2種類の拡張が混在するプログラムを機能の階層と実装の階層にわけ、その間に橋渡しを行うパターンです。

 

第10章 Strategy パターン

アルゴリズムをごっそり切り替えて改良しやすいようにするパターンです。

 

第11章 Composite パターン

容器と中身を同一視して、再帰的な構造を構築するパターンです。

 

第12章 Decorator パターン

飾り枠と中身を同一視して、飾り枠を何重にも重ねるパターンです。

 

第13章 Visitor パターン

構造を渡り歩きながら同じ操作を繰り返し適用するパターンです。

 

第14章 Chain of Responsibility パターン

複数の物が連なっている中の、どこかで仕事を行うと言うパターンです。

 

第15章 Facade パターン

複雑に絡んだクラスを個別に制御するのではなく、窓口役のクラスを一つ配置することでシステム全体の操作性をよくするパターンです。

 

第16章 Mediator パターン

複数のクラスが互いに相談し合うのではなく、相談役のクラスを一つ用意し、その相談役とだけやり取りすることでプログラムをシンプルにするパターンです。

 

第17章 Observer パターン

状態が変化するクラスとその変化を通知してもらうクラスを分けて考えるパターンです、

 

第18章 Memento パターン

現在の状態を保存し、必要に応じて復帰させ、アンドゥを行えるようにするパターンです。

 

第19章 State パターン

状態をクラスで表現し、状態に応じたswicth文を減らすパターンです。

 

第20章 Flyweght パターン

複数箇所で同じ物が登場するときに、それらを共有して無駄をなくすパターンです。

 

第21章 Proxy パターン

本当に目的の物が必要になるまでは代理人を使って処理を進めるパターンです。

 

第22章 Command パターン

要求や命令を形にしてクラスで表現するパターンです。

 

第23章 Interpreter パターン

文法規則をクラスで表現するパターンです。

 

GoFデザインパターンの分類

 

生成に関するパターン

  • Abstract Factory パターン
  • Builder パターン
  • Factory Method パターン
  • Prototype パターン
  • Singlten パターン

 

構造に関するパターン

  • Adapter パターン
  • Bridge パターン
  • Composite パターン
  • Decorator パターン
  • Facade パターン
  • Flyweght パターン
  • Proxy パターン

 

振る舞いに関するパターン

  • Chain of Responsibility パターン
  • Command パターン
  • Interpreter パターン
  • Iterator パターン
  • Mediator パターン
  • Memento パターン
  • Observer パターン
  • State パターン
  • Starategy パターン
  • Template Method パターン
  • Visitor パターン

 

おわり。