LoginSignup
78
95

More than 5 years have passed since last update.

【デザインパターン再入門】コードを動かしながら理解をしたいなら「java-design-patterns」がオススメ

Last updated at Posted at 2015-07-29

はじめに

GoF本、本としてのボリュームがあって挫折した方も多いのではないでしょうか。
活字を追うよりはコードを実際に追った方が楽だ!とお思いの方には、GitHubの「java-design-patterns」を
オススメします。 コード以外にもクラス図が同梱されていてかなり便利です。

網羅されているパターン

網羅されているパターンは以下の53種類です。(2015/07/29 現在)

  • abstract-factory
  • adapter
  • async-method-invocation
  • bridge
  • builder
  • business-delegate
  • callback
  • chain
  • command
  • composite
  • dao
  • decorator
  • dependency-injection
  • double-checked-locking
  • double-dispatch
  • event-aggregator
  • execute-around
  • facade
  • factory-method
  • flux
  • flyweight
  • front-controller
  • intercepting-filter
  • interpreter
  • iterator
  • lazy-loading
  • mediator
  • memento
  • model-view-controller
  • model-view-presenter
  • multiton
  • naked-objects
  • null-object
  • object-pool
  • observer
  • poison-pill
  • private-class-data
  • property
  • prototype
  • proxy
  • repository
  • resource-acquisition-is-initialization
  • servant
  • service-layer
  • service-locator
  • singleton
  • specification
  • state
  • strategy
  • template-method
  • thread-pool
  • tolerant-reader
  • visitor

null-object、double-checked-locking等があったりと、GoF本に載っていないけどよく使わられるパターンも網羅されています。
double-checked-lockingは有名なsynchronized句によるアウトオブオーダー書き込みを避けるように
書かれていて、個人的におおーっと思いながらコードを読んでいました。

プロジェクトをEclipseへインポートする手順

実際に手元で動かしたい方は、以下の手順でリポジトリを落としてきて、Eclipseにインポートしましょう。
(IntelliJ、NetBeans等他のIDEを使ってる方ごめんなさい)

git clone https://github.com/iluwatar/java-design-patterns.git
cd java-design-patterns
mvn eclipse:eclipse

その後、Eclipseのパッケージエクスプローラーからインポートをします。

Java_-_Eclipse_-__Users_nikuyoshi_workspace.png

Screen Shot 2015-07-29 at 23.03.13.png

Screen Shot 2015-07-29 at 23.09.52.png

java-design-patternsのフォルダを指定して、任意のフォルダをインポートします。

するとこんな感じで、一気にプロジェクトが並びます。

Screen Shot 2015-07-29 at 23.12.02.png

各プロジェクトにApp.javaというmainメソッドを実装しているクラスがあるので、任意の場所でブレークポイントを打ってデバッグしながらコードを追っていくと理解が深まると思います。

また、各プロジェクトに*.uclsというファイルがあります。 それがクラス図です。
そのファイルを読むには、ObjectAid UML Explorerが必要です。以下のページを見ながらインストールをしてみてください。

実際にabstract-factoryのクラス図を開いてみると、以下通り各クラスの関係が分かると思います。

Screen Shot 2015-07-29 at 23.23.01.png

一日一つずつでも良いので、実際にコードを追ってみましょう。デザパタの知識がより一層身に付くと思います。

参考

double-checked lockingとSingletonパターン
https://www.ibm.com/developerworks/jp/java/library/j-dcl/

78
95
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
95