Java読書会BOFの読書会開催日でした。
昨年11月から読み始め、今日で4回目です。今日の内容は、
- 依存性逆転の原則(DIP:The Dependency Inversion Principle)
- インタフェース分離の原則(ISP:The Interface Segregation Principle)
- Commandパターン
- Active Objectパターン
- Template Methodパターン
- Strategyパターン
- Facadeパターン
- Mediatorパターン
です。
衝撃の内容は、依存性逆転の原則(DIP)でした。今までの自分の設計方法を否定されたに近い内容でした。上位レイヤが下位レイヤに依存しない設計はカルチャーショックものです。
今までは、下位レイヤのAPIをインタフェースなりFacadeで設計し、上位レイヤは下位レイヤのそのAPIを呼び出す構造を常套手段として用いてきました。
しかし、DIPによれば上位レイヤは下位レイヤのAPIへ依存させず、上位レイヤ内部において期待する振る舞いをインタフェースなり抽象クラスで設計します。下位レイヤはそのインフェースや抽象クラスを実現する具象クラスを提供します。
DIPでは再利用すべきは上位レイヤなのです。
インタフェース分離の原則(SIP)では、CORBAのインタフェース設計の考え方と通じる点があると思いました。インタフェース変更の波及についても扱っており、一つにまとめた(太った)インタフェースは変更にもろい(再コンパイル・再配布が生じる)という点はうなずけます。
パターンの乱用のいましめ
パターンを利用するためのコストが、それを使うことによって得られる利益以上に高くつきすぎる
読書会参加人数の推移
初回エントリー30人、2回目エントリー19人、3回目エントリー19人、4回目エントリー14人
ほぼパターンに従った人数推移になっています。
XPやアジャイル開発の隆盛、オブジェクト指向設計の広がりからもっと参加人数が増えるのではないかと予想していましたが、いつものパターンに落ち着いています。
Jolt Award受賞の名著にも関わらず、この規模というのも・・・。休日に自ら主体的に勉強(読書)する人が少ないようです。宣伝が足りないのかな。書籍が高いという声もあったけど、参加者の中には書籍費に月5万円、2万円をつぎ込んでいる人もおり、ようはやる気ではないかというところに落ち着きました。
日本語でオブジェクト指向設計の考え方・実践方法に触れた書籍は希少です。