Skeleton of GOF's Design Patterns




デザインパターンの骸骨たち (RE-BONE) with C

■はじめに

『デザインパターン』 うんちくできると、かっこよさそうだよね〜。でもあんな分厚い本読んでもピンとこないし、だいたいオブジェクト指向ってなに?なにが便利なのかよく分からんのだけど。いいじゃんなんでも。できればいいんだよ、できれば。

な〜んて、思っていても、なんとなく オブジェクト指向が気になっている システム開発者は、多いのではないでしょうか?かくいう 私もそんな者の一人でした。

しかし、これだけ もてはやされているオブジェクト指向です。
なんか、便利なはずです。

そこで、私は、GOFのデザインパターン[1]を、できるだけシンプルに表現した、小さな小さなプログラム 〜デザインパターンの骸骨たち〜 を作ってみました。骸骨達 を骨の髄までしゃぶり尽くつくすせば、オブジェクト指向の真髄まで味わうことができるかも。!?

『デザインパターンの骸骨たち(RE-BONE)』 では、内容を大幅に見直し、Java2 への対応、C++への対応を行いました。より内容が充実した 『デザインパターンの骸骨たち(RE-BONE)』 を味わってください。(2003.11.23)

デザインパターンの実際の適用例や、応用などについては、『デザインパターンの塗り薬』で紹介しています。デザインパターンをさらに極めたい方は、こちらも参照ください。(2004.4.11)

『デザインパターンの骸骨たち(RE-BONE) with C』 では、C言語版のデザインパターンを加えました。実際に活用できるケースは少ないと思いますが、C++版と対比させてみると、this ポインタや継承システムの有用性がよく分かると思います。興味があれば、参照してみてください。(2009.2.28.)


[ご覧になる前に]

掲載した内容に関する ご質問、ご意見、ご要望への対応は、一切保証できません。また、掲載プログラムもしくは掲載内容を利用、引用した結果、なんらかの損失が発生したとしても、著者 太田 義則は、その責任を一切負いません。

ここで紹介する内容は、すでにデザインパターンがなんであるか知っているということを前提に書かれています。細かい内容や、歴史的な背景等については、まったく記述していません。

デザインパターンについて知らない方は、参考文献を本ページの最後に載せましたので参考にしてください。その他、現在では良書がたくさんでています。近所の本屋さんで探してみてください。

GoF's Design Patterns

生成

構造

振る舞い

FACTORYMETHODの骸骨 ADAPTERの骸骨 INTERPRETERの骸骨
ABSTRACTFACTORYの骸骨 BRIDGEの骸骨 CHAIN OF RESPONSIBILTYの骸骨
BUILDERの骸骨 COMPOSITEの骸骨 COMMANDの骸骨
PROTOTYPEの骸骨 DECORATORの骸骨 ITERATORの骸骨
SINGLETONの骸骨 FACADEの骸骨 MEDIATORの骸骨
  FLYWEIGHTの骸骨 MEMENTOの骸骨
PROXYの骸骨 OBSERVERの骸骨
TEMPLATEMETHODの骸骨 STATEの骸骨
  STRATEGYの骸骨
VISITORの骸骨


<おまけ>

ここでは、個人的な嗜好で、設計に役に立つかも!というものから、こいつはどうかなぁ・・と思いつつ気になるパターン等を紹介していきます。発展途上のものから、まったく目新しいもの、そしてGoFのバリエーションの一つのようなものまで、あまりこだわりなく収集していく予定です。

ただ、新興のパターンは資料も少ないので、内容について勘違いや、理解不足が多々あると思います。役に立つかどうか分かりませんが、参考になれば幸いです。

また、かの有名な 結城浩さんのホームページでも、GOF以外のパターンを紹介 されています。説明が平易で、とても分かりやすいです。是非、ご覧ください。

Various Design Patterns and Idioms

カテゴリ

パターン / イディオム

備考

振る舞い

TYPEDMESSAGEの骸骨 参考文献[4]

生成

MONOSTATEの骸骨 参考文献[13]

平行性

DOUBLECHECKEDLOCKINGの骸骨 参考文献[14]

振舞い

HIERARCHICALVISITORの骸骨 参考文献[15]

振る舞い

COMPONENTBUSの骸骨 参考文献[16]

振る舞い

CACHEMANAGERの骸骨 参考文献[17]

構造

GENERATIONGAPの骸骨 参考文献[4]

構造

ROLEOBJECTの骸骨 参考文献[18]

振る舞い

OBJECTPOOLの骸骨 参考文献[19]

 

ご意見、ご感想はこちらまで。

Copyright(C) 2000-2009 Yoshinori Oota All rights reserved.

本ホームページのリンクは自由です。複製、転載される場合は、必ず著者までご連絡をください。

参考文献

 

[1]

『オブジェクト指向における再利用のためのデザインパターン』
  著者 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  監訳 本位田 真一、吉田 和樹
  発行 ソフトバンクパブリッシング株式会社 1995年 10月
  ISBN 4-890520797-4

[2]

『Peter CoadによるJavaオブジェクト設計』
  著者 Peter Coad, Mark Mayfield
  監訳 今野 睦
  発行 株式会社プレンティスフォール出版 1997年 11月
  ISBN 4-89471-014-5

[3]

『Javaとピザとデザインパターン』
  著者 Mattihias Felleisen, Daniel P.Friedman
  訳者 庄司 速人、庄司 裕子
  発行 ソフトバンク株式会社 1998年 12月
  ISBN 4-7973-0790-0

[4]

『パターンハッチング』
  著者 John VLISSIDES
  訳者 長瀬 嘉秀、永田 渉
  発行 株式会社ピアソン・エデュケーション 1999年 11月
  ISBN 4-89471-148-6

[5]

『プログラミング言語Java 第3版』
  著者 Ken Arnold James Gosling David Holmes
  訳者 柴田 芳樹
  発行 株式会社ピアソン・エデュケーション
  ISBN 4-89471-343-8

[6]

『Effective Java プログラミング言語ガイド』
  著者 Joshua Bloch
  訳者 柴田 芳樹
  発行 株式会社ピアソン・エデュケーション
  ISBN 4-89471-436-1

[7]

『プログラミング言語C++第3版』
  著者 Bjarne Stroustrup
  訳者 長尾 高弘
  発行 アジソン・ウェスレイ・パブリッシャーズ・ジャパン株式会社
  ISBN 4-7561-1895-X C3004

[8]

『EffectiveC++改訂2版』
  著者 Scott Meyers
  訳者 吉川 邦夫
  発行 株式会社アスキー
  ISBN 4-7561-1808-9

[9]

『More EffectiveC++』
  著者 Scott Meyers
  訳者 安村 通晃、伊賀 総一郎、飯田 朱美
  発行 アジソン・ウェスレイ・パブリッシャーズ・ジャパン株式会社
  ISBN 4-7561-1853-X C3004

[10]

『C++によるデータ構造入門』
  著者 Timothy A.Budd
  訳者 神林 靖
  発行 株式会社アスキー
  ISBN 4-7561-1845-3

[11]

『Exceptional C++』
  著者 Herb Sutter
  訳者 浜田 真理
  発行 株式会社ピアソン・エデュケーション
  ISBN 4-89471-270-9

[12]

『ソフトウエアアーキテクチャ』
  著者 F Buschmann, R Meunier, H Rohnert, P Sommerlad, M stal
  訳者 金澤 典子/ 水野 貴之/ 桜井 麻里/ 関 富登志/ 千葉 寛之
  発行 株式会社 トッパン
  ISBN 4-8101-9007-2

[13]

『Singleton and Monostate』
  http://www.objectmentor.com/resources/articles/SingletonAndMonostate.pdf

[14]

『Double-Checked Locking』
  http://www.cs.wustl.edu/~schmidt/PDF/DC-Locking.pdf

[15]

『HierarchicalVisitorPattern』
  http://c2.com/cgi/wiki?HierarchicalVisitorPattern

[16]

『Component Interaction Patterns』
  http://jerry.cs.uiuc.edu/~plop/plop99/proceedings/Eskelin1/ComponentInteractionPatterns.pdf

[17]

『Pattern Summaries: Cache Management』
  http://www.developer.com/java/other/article.php/630481

[18]

『The Role Object Pattern』
  http://st-www.cs.uiuc.edu/users/hanmer/PLoP-97/Proceedings/riehle.pdf

[19]

『Pattern Summaries: Object Pool』
  http://www.developer.com/java/ent/article.php/626171