GoFのデザインパターン
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (202件) を見る
ここ10年でオブジェクト指向を一変させた革命的な技術と言えば,GoFのデザインパターンとJavaだろう.Java自体の設計にもGoFのデザインパターンは大きく影響を与えているようだ.
デザインパターンをUMLモデリングと絡めて説明している本もあるようだが,これはキッパリと間違いだと考えている.比率としてはデザインパターンカタログがGoF本の多くを占めるが,GoF本の本質は次のような部分にある.
- (実装)継承の危険性
- 実装継承による再利用性の向上は,さほど高くない.
- インターフェース継承の概念の提案.
- 実装継承よりもインターフェース継承を使う.
- 実装継承よりもコンポジションを使う.
GoF本登場以前は実装継承を使った差分プログラミングを絶賛する本も少なくなかったが,GoF本により実装継承はカプセル化を破壊しオブジェクトの依存関係を増やす諸刃の剣であることが示された.それに代わって再利用の主役となったのがインターフェース継承とコンポジションである.これらのことを理解せずにカタログだけを丸暗記したとしても効果は薄いだろう.
さらに言えばそもそも当時はまだUMLが存在しなかった.存在さえしていないものがデザインパターンの誕生に何らかの影響を与えたはずがない.原典であるGoF本においてもUML記述は一切使われていない.デザインパターンカタログにおいてクラス階層やインスタンスの参照関係などを示すのにUML風の表記(OMT法?)は使われているが,それさえもカタログの主役とは言い難く,あくまで概要を示すための略図以上のものではない.
デザインパターンは実装の中から試行錯誤して生まれた設計ノウハウの集大成であり,UML図のようなチャチな技術とは何の関係もない.