UMLによるJavaオブジェクト設計

UMLによるJavaオブジェクト設計

200/260ページ読んだ。まず、この本はタイトルが微妙ではあるが、オブジェクト指向設計について、JavaUMLを実際のツールとして用いて解説している本である。従ってJavaに限った内容ではないが、著者はかなりのJava信者のようではある。UMLはクラス図とシーケンス図を解説に使ってる程度。内容は、

の4つ。

1つ目の継承とコンポジションについては、継承よりコンポジションを使え、という話。まあ継承よりコンポジションを使うべきだというのは、今となっては当たり前すぎる話だが、どのような場合にどちらを使うべきなのかについて、具体的な指針が述べられていることに意味がある。

2つ目のインターフェイスについては、Javaインターフェイスは素晴らしいもので、これを用いて設計をしろ、といった教導的な内容。しかしかなり細かく機能をインターフェイスとして抽出してて、ちょっとやりすぎ感があった。

3つ目のマルチスレッドについては、同一のオブジェクトに、複数のスレッドから操作される複数の処理A, Bがあり、それぞれの処理に異なる優先順位をつけたい場合には、A, Bそれぞれのメソッドを呼び出すスレッドとしてThreadA, ThreadBに異なる優先順位を付与して起動するが、この場合Runnableを実装したクラスのrun()の頭でA, Bそれぞれのメソッドに振り分けるswitchが出現してしまうため、これを回避するためにAdapterパターンを用いる、といった内容。

Adapterパターンは異なるインターフェイス間の齟齬を解消するための緩衝材として用いるもの程度に思っていたが、switchを消すための処理の振り分けに使えるという例には、へぇー、と思った。まあポリモーフィズム使えばAdapterでなくてもなんであれ、switchの代わりにはなるんだろうけど。

まあ俺は単純な並行処理のためにしかスレッドを使ったことがないので、優先順位とか気にしたことがないし、それ以外にはスレッドの一般的な話だけだったので、スレッド自身に関する解説というよりは、設計例の題材としてマルチスレッドが用いられていた、程度の認識で読んだ。

4つめのオブザーバについてはまだ読んでない。

まあ薄い本だし比較的基本的な内容なので、読むのにあまり時間を取られないのでいいのだが、難点を挙げるとすれば、本の内容が古すぎると思った。初版の時期(1997/11)を考えれば無理もないことかもしれないが、Strategyパターンを戦略パターンと訳している辺りからも窺えるように、GoFのデザインパターンが普及する前のものなので、この文章は「○○パターン」について語ってるのか、みたいに適宜解釈する必要があるのが面倒だと思った。後は古いので、内容が陳腐化してるかも、ということだけ気をつけておけばまあ良書の類かと。

これは昨日購入した3冊のうちで一番薄くて基本的っぽかったので先に読んだが(読めそうなので買ったとも言う)、残りの2冊は買ってはみたものの、読めそうな気がしない。読むのにどれだけ時間がかかるやら…