Rubyとデザインパターン

本職は泥臭い組込みプログラマなので、Rubyとかのオブジェクト指向プログラミング言語をいじるのは完全に趣味の世界。
なので、私のデザインパターンに関する理解は浅薄で、GoF本やら結城本やらオルセンRubyによるデザインパターン』やら読んで、後はWEBの読物を少し読みました、というレベル。
まああまり使わないし、すぐ忘れる。

自分自身の備忘の為、少しデザインパターンについて一通りおさらいしようと思う。

GoF本(『オブジェクト指向における再利用のためのデザインパターン』)では、デザインパターンを3種類に分類している。生成に関するパターン/構造に関するパターン/振る舞いに関するパターン。

ラス・オルセンの『Rubyによるデザインパターン』では、GoF本のメジャーなデザインパターンについて Ruby で解説した後、Rubyの動的特性を生かした、メタプログラミング系の思想についてつっこんで解説している。

[C]AbstractFactory 抽象的な工場
[S]Adapter 接続装置

[S]Bridge- 橋
[C]Builder 構築者

[B]ChainOfResponsibility- 責任の連鎖
[B]Command 命令
[S]Composite 合成物
[R]ConventionOverConfiguration 設定より規約

[R]DSL 内部ドメイン特化言語
[S]Decorator 装飾者
[S]Facade- 見かけ
[C]FactoryMethod 工場メソッド
[S]Flyweight- 軽量級

[B]Interpreter 通訳
[B]Iterator 繰り返し
[B]Mediator- 調停者
[B]Memento- 形見
[R]MetaProgramming メタプログラミング

[B]Observer 観察者
[C]Prototype- 原型
[S]Proxy 代理人

[C]Singleton 一人っ子
[B]State- 状態
[B]Strategy 戦略

[B]TemplateMethod ひな型メソッド
[B]Visitor- 訪問者

↑つーわけで、GoF23パターンと、オルセン本の3項目をアルファベット順に並べてみた。(英字の後ろの「-」はオルセン本では触れられていない項目を意味する)
先頭の一文字の意味は以下。

[C]…オブジェクトの生成に関するパターン (Creational patterns)
[S]…プログラムの構造に関するパターン (Structural patterns)
[B]…オブジェクトの振る舞いに関するパターン (Behavioral patterns)
[R]…Rubyによるデザインパターン


【参考文献/サイト】

『矢沢久雄の早わかりGoFデザインパターンhttp://itpro.nikkeibp.co.jp/article/COLUMN/20051201/225570/

結城浩『増補改訂版Java言語で学ぶデザインパターン入門』 http://www.amazon.co.jp/exec/obidos/ASIN/4797327030

ラス・オルセンRubyによるデザインパターンhttp://www.amazon.co.jp/exec/obidos/ASIN/4894712857

Rubyによるデザインパターンを買ってみた - ありの日記』 http://d.hatena.ne.jp/hiro_nemu/20090426/1240757486

『Design Patterns (book) - Wikipedia, the free encyclopedia』 http://en.wikipedia.org/wiki/Design_Patterns_%28book%29

デザインパターン (ソフトウェア) - Wikipediahttp://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%29
Wikipedia(ja)によるデザインパターンの解説。GoF23パターンのうち Prototype, State以外のパターンに関する解説がある。

結城本『Java言語で学ぶデザインパターン』に対応したRubyコード(一通りある) http://www.ceres.dti.ne.jp/~kaga/frame.html

AbstractFactory.rd』 http://www.rubycolor.org/dp/AbstractFactory.html
↑まだ AbstractFactoryIterator しか無い。

Java言語で学ぶ…』に対応したRubyによるデザインパターン×4。Iterator, Adapter, TemplateMethod, FactoryMethodhttp://www.jaist.ac.jp/~m-hatake/design/

『まつもと直伝 プログラミングのオキテ 第8回 デザインパターン(1)』 http://itpro.nikkeibp.co.jp/article/COLUMN/20070608/274002/?ST=oss
三回に分けて↑、Iterator,Observer,Prototype,Proxy,Singleton,Strategy,TemplateMethod について触れられている。