こんにちは、おがたです。
みなさん、コメントありがとうございます。
内容がわかりづらくて申し訳ないです。

背景を説明しますと、もともとは、デザインパターン本の手習いと
いうことで一番なじみやすかった Composite パターンを実装して
みようと思ったのです。
当初は本に習ってクラス間の継承の形にしていたのですが実用段階
になって Component クラスから継承させて、新しい Composite の
親を作りたいと感じました。
どうせだから、動的に親を変えられる Composite を目指そうと
Component を module にする案も考えてみたのですが、Component 
にインスタンス変数が必要なため、あまり適していないと思いまし
た。(どこで初期化すべきか判断つかなかったから)

そんなおり、23125 からのスレッドを見て、インスタンス変数に
封じ込める手があるんだなぁ、と。
Proxy パターンは、該当すると思ったのですが、ちょっと内容を
把握しきれなかったので、自分のわかる範囲でやってみようとして
こうなってしまったわけです。

簡単にテストしてみたら
  ary = ExtArray.new
  p ary.type #-> ExtArray
  p (ary<<25).type #-> Array
となったので今回は見送りかなぁと。

# method_missing(meg_id,*arg)で渡すのと違いが良くわかっていない
# というのが...精進が足りてませんね

return self にこだわりたいというのは、雛型の Component クラス
から継承させて、Composite の親となる Component クラスを作る時に
 return @self を強要するのはバグの元かなという発想でした。
(もともと、Component クラスとしては return self で問題ないので)

def self=(_self)

は SyntacsError なので無理かな?と思ったのですが

attr_accessor:self

が通ったので、工夫すればできるのかな?とおもったりして。
すっぱり、あきらめるべきですね。

---------------------------------------------------
Kenya Ogata 
E-mail   k_ogata / mbd.nifty.com
HomePage http://homepage1.nifty.com/~k_ogata/ruby/diary.html