GoFのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

ここ10年でオブジェクト指向を一変させた革命的な技術と言えば,GoFデザインパターンJavaだろう.Java自体の設計にもGoFデザインパターンは大きく影響を与えているようだ.

デザインパターンUMLモデリングと絡めて説明している本もあるようだが,これはキッパリと間違いだと考えている.比率としてはデザインパターンカタログがGoF本の多くを占めるが,GoF本の本質は次のような部分にある.

  • (実装)継承の危険性
  • 実装継承による再利用性の向上は,さほど高くない.
  • インターフェース継承の概念の提案.
  • 実装継承よりもインターフェース継承を使う.
  • 実装継承よりもコンポジションを使う.

GoF本登場以前は実装継承を使った差分プログラミングを絶賛する本も少なくなかったが,GoF本により実装継承はカプセル化を破壊しオブジェクトの依存関係を増やす諸刃の剣であることが示された.それに代わって再利用の主役となったのがインターフェース継承とコンポジションである.これらのことを理解せずにカタログだけを丸暗記したとしても効果は薄いだろう.
さらに言えばそもそも当時はまだUMLが存在しなかった.存在さえしていないものがデザインパターンの誕生に何らかの影響を与えたはずがない.原典であるGoF本においてもUML記述は一切使われていない.デザインパターンカタログにおいてクラス階層やインスタンスの参照関係などを示すのにUML風の表記(OMT法?)は使われているが,それさえもカタログの主役とは言い難く,あくまで概要を示すための略図以上のものではない.
デザインパターンは実装の中から試行錯誤して生まれた設計ノウハウの集大成であり,UML図のようなチャチな技術とは何の関係もない.

パターンハッチング

パターンハッチング―実践デザインパターン (Software patterns series)

パターンハッチング―実践デザインパターン (Software patterns series)

  • 作者: ジョンブリシデス,John Vlissides,永田渉,長瀬嘉秀
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 1999/11
  • メディア: 単行本
  • 購入: 1人 クリック: 5回
  • この商品を含むブログ (10件) を見る
知名度GoF本に数段劣るが,デザインパターンの考え方を理解する上では良書の一つ.「1章:大誤解トップ10」と「5章:効果的なパターンを書く人の7つの習慣」だけでも目を通しておくことは無駄ではない.

大誤解トップ10

  1. パターンとはコンテキスト(文脈)における問題の解決策である.
  2. パターンはただの専門用語,ルール,プログラミング技法,データ構造...にすぎない.
  3. 一つを見れば,全てがわかる
  4. パターンはツールまたは方法論的なサポートがないと役に立たない.
  5. パターンは再利用可能なソフトウェア,高生産性,世界平和などを保証する
  6. パターンは全体のアーキテクチャを生成する
  7. パターンは(オブジェクト指向の)設計又は実装のためにある
  8. パターンが誰かを助けるという証拠はない
  9. パターンコミュニティはエリートの徒党である
  10. パターンコミュニティは自己の利益のために動き,陰謀的である.

developerWorks Javaの理論と実践:欠陥マイクロベンチマークを分析する

(http://www-6.ibm.com/jp/developerworks/java/050311/j_j-jtp02225.html)
欠陥ベンチマークを通じて,マイクロベンチマークの危険性と並列プログラミング,パフォーマンスチューニングの難しさを解説している.Java開発者必読.
JavaではC++などにはなかった動的最適化が既に標準となっているため,それ以前の静的最適化ベースのチューニング法が時代遅れになった.これは最適化コンパイラの登場でregister宣言が時代遅れになったのと同じ.最適化技術の変化と共にプログラミングスタイルも変化するものである.

包丁立て

http://www.viceversa.com/Dynamic/Products,intCategoryID,34,intItemID,1447.html
http://gizmodo.com/101217/voodoo-knife-holder-now-for-sale
Voodoo Knife Holder
メモ.ブラックユーモアが効きすぎてます.
....それ以前に刃先を覆ってない時点で,包丁立てとしては問題ありまくりのような.