[#21736] OBJECTDAY 2000 — 助田 雅紀 <masaki.suketa@...>

助田です.

29 messages 2000/04/03
[#21748] Re: OBJECTDAY 2000 — keiju@... (石塚圭樹) 2000/04/04

けいじゅ@日本ラショナルソフトウェアです.

[#21753] Re: OBJECTDAY 2000 — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/04/05

石橋秀仁です。

[#21755] Re: OBJECTDAY 2000 — keiju@... (石塚圭樹) 2000/04/05

けいじゅ@日本ラショナルソフトウェアです.

[#21837] site_ruby & Linux distribution — OZAWA Sakuro <crouton@...>

小澤さくです。

14 messages 2000/04/10

[#21922] ruby-1.4.4 binary for BeOS 5 (Intel) — tenmei@... (Noriaki Harada)

はらだです。

23 messages 2000/04/15
[#21923] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/15

はじめまして、内藤と申します。

[#21926] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — tenmei@... (Noriaki Harada) 2000/04/16

>はじめまして、内藤と申します。

[#21930] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/16

内藤です。

[#21968] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — Katsuyuki Komatsu <komatsu@...> 2000/04/17

小松です。

[#21969] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/17

再び内藤です。

[#21956] Thread & STDIN — Masato Toyoshima <mt@...>

はじめまして、豊島といいます。

16 messages 2000/04/17

[#21981] rd2man — WATANABE Hirofumi <eban@...>

わたなべです.

29 messages 2000/04/18
[#21982] Re: rd2man — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/18

Toshです。

[#21985] Re: rd2man — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/04/19

わたなべです.

[#22036] Re: rd2man — Wakou Aoyama <wakou@...> 2000/04/20

青山です。

[#22040] Re: rd2man — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/21

Toshです。

[#22014] shell interactive — WATANABE Daisaku <dwata@...3.rim.or.jp>

31 messages 2000/04/20
[#22016] Re: shell interactive — 時田幸粋 <ktokita@...> 2000/04/20

こんにちは、時田です。

[#22017] Re: shell interactive — nobu.nakada@... 2000/04/20

なかだです。

[#22018] Re: shell interactive — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/04/20

わたなべです.

[#22027] Re: shell interactive — 時田幸粋 <ktokita@...> 2000/04/20

こんにちは、時田です。

[#22103] Please put ruby-1.4.4.tar.gz in pub/lang/ruby/1.4/ — "Akinori -Aki- MUSHA" <knu@...>

 お願いがあるのですが、 ruby-1.4.4.tar.gz を FTP ツリーの 1.4/

16 messages 2000/04/25
[#22199] Where to put ruby-i.j.k.tar.gz on? (Re: ) — SUGIHARA Hiroshi <maili31s@...> 2000/04/28

[ruby-list:22103]におきまして、2000/04/25 12:38ほどに、

[#22117] StateGraph: state machine interpreter — Hideto ISHIBASHI <hideto-i@...4u.or.jp>

石橋 "rubyholic" 秀仁です。

16 messages 2000/04/25

[#22159] $LOAD_PATH への追加について — "Sugawara Hajime" <sugawara@...>

 はじめまして、菅原@ホビー・データです。

13 messages 2000/04/27

[#22181] Can't Use optparse — Yamada Kenji <kyamada@...>

28 messages 2000/04/28
[#22186] Re: Can't Use optparse — akira yamada / やまだあきら <akira@...> 2000/04/28

[#22195] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/28

Toshです。

[#22261] Re: Can't Use optparse — nobu.nakada@... 2000/05/04

なかだです。

[#22264] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/04

Toshです。

[#22270] Re: Can't Use optparse — nobu.nakada@... 2000/05/04

なかだです。

[#22272] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/04

Toshです。

[#22300] Re: Can't Use optparse — Koji Arai <JCA02266@...> 2000/05/05

新井です。

[ruby-list:22122] Re: shell interactive

From: Hideto ISHIBASHI <hideto-i@...4u.or.jp>
Date: 2000-04-25 15:32:26 UTC
List: ruby-list #22122
石橋秀仁です。

> こんにちは、時田です。

> > だから、Decoratorパターンなんですよ。JavaのStream系と同じ。
> > でも、ぼく自身は必要性を感じません。上記のようにmix-inで済むから。
> 
> Javaを知らないから Decoratorパターンってのが、よくわからないんですよね(^^;
> いや、「これがそーだっ」ってのは printf のすげ替えでなんとなくわかるんですけど
> 「だから、Decoratorパターンなんですよ」って事は、単なるすげ替えとは
> 違うって事ですよね?
> 手法でなく、どういう思想のものなのかだけ教えてもらえますか?
> つまり、マクロアセンブラでいう所のマクロ的なプリプロセッサによるすげ替え
> との違いを簡単にで構わないので(^^;

たしかに、"alias print_old print"というのは、
われながら気持ちわるいです (^^;
だから、もうすこし工夫して、
 * 継承してsuperを呼ぶ
 * Decoratorパターンを使う
というのを考えました。(で、Decoratorについては説明しませんでしたね)

まず、やみくもに継承するのはOOPL初心者のC++ユーザがやりがちで、
一番よくない。次に、いちおうdelegate.rbのDelegate(Proxy)でも
解決できますが、もう一声ほしいところです。

そこで、Decoratorパターン (別名Wrapper) というのが出てきます。
「オブジェクトに動的に責任を追加する」。具体的には、あるクラスに
機能を追加したいときに、「透明」なクラスを「かぶせる (ラップする)」。
「透明」とは、「インターフェースを変更しない」という意味。
つまり、もとのクラスと全く同じように使える。

たとえば、

class Foo
  def initialize(foo)
    @foo = foo
  end
  attr :foo
  def bar
    print foo
  end
end

class FooWrapper
  def initialize(obj)
    @obj = obj
  end
  def foo
    @obj.foo
  end
  def bar
    print "foo = ", @obj.foo, "\n"
  end
end

foo = Foo.new("test")
foo.bar          # => "test"
wrapped_foo = FooWrapper.new(foo)
wrapped_foo.bar  # => "foo = test\n"

このコードで、Foo (foo)とFooWrapper (wrapped_foo)は、
同じメッセージを受けつけます。インターフェースだけでは
見分けがつきませんね?これを「透明」といいます。

で、ちょうどいいときに、前田さんのメールがありました。

From: Shugo Maeda <shugo@ruby-lang.org>
Subject: [ruby-list:22096] libwrap-ruby

> 前田です。

> require "tcpd"
> 
> serv = TCPServer.open(ARGV.shift || "echo")
> tcpd = TCPWrapper.new("echod", serv, true, 30)
> loop do
>   ns = tcpd.accept
>   Thread.start do
>     s = ns
>     while line = s.gets
>       s.print(line)
>     end
>     s.shutdown
>     s.close
>   end
> end

既存のクラス (IOやらSocketやら) に手をつけずに、
こういう拡張ができるところがDecoratorの利点ですね :)

--
Hideto "rubyholic" ISHIBASHI

In This Thread