local rebinding

まつもとさんのコメント、FooということはSelector namespaceの仕様に近いということですか。私はその点についてはlocal rebindingの仕様のほうが使いやすい気がします。尤も実際に使用したことがないので、空想レベルの感覚ですが。どちらにも長所と短所があることは確かなので、もう少し考察してみます。

その後少し考えてみましたが、やはりlocal rebindingの仕様のほうが良いと思います。
元のプログラムを書き換えないままで動作を変えるために、差分をmoduleとして定義することが目的の筈です。local rebindingになっていないと、あるメソッドの定義を変えようとしても、元のメソッドを元のmoduleから呼び出していれば完全にはhookできなくなります。local rebindingでないほうが嬉しいケースも少しはあるでしょうが、そのときには元のmoduleの中のメソッド名とは異なる名前でメソッドを定義すれば、綺麗な方法ではないですが避けることができます。
AOPやDIを実現する手段として考えた場合でも、local rebindingのほうが容易なのではないでしょうか?
また、デザインパターンを表現する手段としても、MixJuiceのようにlocal rebindingのほうが良い気がします。
MixJuice によるデザインパターン改善カタログ