From: matz@... (Yukihiro Matsumoto) Date: 1998-01-30T11:22:48+09:00 Subject: [ruby-list:6124] Re: Ruby 連載 第 3 回 まつもと ゆきひろです In message "[ruby-list:6113] Re: Ruby 連載 第 3 回" on 98/01/29, Takahiro Maebashi writes: |前橋です。 |Visitor,Delegater,Observer それぞれについて、簡単にでも説明して頂ける |とありがたいです。Ruby本は出たら必ず買いますので。 本当ですね? ^^;;; # これで1冊はキープしたな… まだ,この部分の原稿を書くのは先だな,と思ってGamma本を手元 に用意していないのですが, Visitor コンテナ(あるいはオブジェクト群を表現する構造)の中身を順 にたどっていくためのパターン.Rubyではクラスの関係(パター ン)ではなく,イテレータで実現する Delegater Delegation(委譲)を実現するパターン.自分の理解する以外の メッセージを他のオブジェクトに転送するパターン.このパター ンの一種にDecoraterもある Observer あるオブジェクトの状態が変化した時にその変化に追随するオ ブジェクト群のパターン.MVCのモデルとViewの関係 のはずです.間違ってたら教えて下さい. |ところで Delegater ではなくて Delegator じゃないですか? そうなんですか? しまったなあ,Delegaterってクラス作っちゃっ たなあ. |> のものが多くて,結局あれがライブラリではなくパターンなのは記 |> 述言語(要はC++)の記述力が低くて十分に抽象化できないので,ラ |> イブラリ化できないだけではないか,という気がして来ています. | |すみません、ここの部分の意味がとれなかったのですが、、、、 C++の場合は静的な型があったり,ちゃんとしたGenericityがなかっ たりして,ほとんどの場合あるパターンに一般的に対応するクラス というのがあらかじめ定義できず,こういう関係のクラス群という のを毎回定義する必要があります.一方Rubyでは静的な型というの はありませんから,DelegaterやObserverのようにあらかじめその パターンを実現するクラス(かモジュール)を実現できます. まだ,作っていませんがSingletonパターン(あるクラスのインスタ ンスを一つだけしか生成しないパターン)もライブラリ化できるは ずです. あと,Factoryパターン(オブジェクトを生成する機能を持つオブジェ クトを用意する)も,クラスがオブジェクトであるRubyではほとん ど不要です. C++の場合には,おそらくtemplateを多用すればある程度まではラ イブラリ化できると思いますし,STLは頑張っていると言う話を聞 きますが,templateは難しいし,すくなくともGamma本ではその範 囲のことには言及していません. まつもと ゆきひろ /:|)