#はじめに
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-design-patterns
のフォルダを指定して、任意のフォルダをインポートします。
するとこんな感じで、一気にプロジェクトが並びます。
各プロジェクトにApp.java
というmainメソッドを実装しているクラスがあるので、任意の場所でブレークポイントを打ってデバッグしながらコードを追っていくと理解が深まると思います。
また、各プロジェクトに*.ucls
というファイルがあります。 それがクラス図です。
そのファイルを読むには、ObjectAid UML Explorerが必要です。以下のページを見ながらインストールをしてみてください。
実際にabstract-factory
のクラス図を開いてみると、以下通り各クラスの関係が分かると思います。
一日一つずつでも良いので、実際にコードを追ってみましょう。デザパタの知識がより一層身に付くと思います。
参考
double-checked lockingとSingletonパターン
https://www.ibm.com/developerworks/jp/java/library/j-dcl/