From: matz@... (Yukihiro Matsumoto) Date: 1997-03-31T11:34:46+09:00 Subject: [ruby-list:2519] Re: WWW library (Re: class design) まつもと ゆきひろです. 補足しておきます. In message "[ruby-list:2514] Re: WWW library (Re: class design)" on 97/03/31, Yukihiro Matsumoto writes: |案1 | | 接続の必要のない操作はURLのクラスメソッドにして,接続の必 | 要な操作だけ,URLにまとめる.Fileクラスのパスの操作などは | こうなっていますね. Fileクラスではpathに関する操作(basnameとか)はクラスメソッド になっています.つまり,pathはオブジェクトではなく,単なる文 字列でパスとして操作する場合には関数的なクラスメソッドで操作 しようというものです. |案2 | | クラスが状態を持つ.つまり, | | url = URL.new(urlspec) | | でURLオブジェクトを作り, | | url.connect | | で初めて接続するわけです.これなら無駄な接続は避けられます | ね. この場合はurlに関数操作は接続の有無に関わらず行うことが出来 ます.urlの操作がurlがオブジェクトであった方が望ましい操作が 多い場合にはこちらの設計の方が良いかも知れません. |案3 | | URLとURLConnectionの両方を用意する.Java風ですね.rubyは静 | 的な型がないので,3段構えにする必要はないでしょう. ちょっと説明不足ですかね.Javaの場合InputStreamを引数として 受け付けるメソッドがあると型の一致が必要なのでかならず InputStreamを渡してやらないといけないので,3段目が必要になる ということです.rubyの場合は同じ働きをする同名のメソッドを定 義してやるだけで良いので,この必要はないはずです. まつもと ゆきひろ /:|)