ファイルリストなどをフィルタリングする時に然るべきタイミングで
呼び出すようにする場合、あったら便利だなと思って書きました。
イメージとして
・yield の出力先を複数に出来る。
・処理する場所に近いところで記述できる。
・クラス作成者はフックがいつ呼ばれるか(順序等)気にしなくていい。
・必要に応じて呼び出すオプショナルな処理。

ちょっと長いですが、以下のようなイメージです。
    
class Foo
  def get_list(uri_list)
    uri_list.each {|uri|
      cache_file_name = get_cache_name(uri)
      flag = add_hook(:cache_name,cache_file_name,uri)
      next unless flag

      get(uri)
      flag = add_hook(:response,res1,res2,cache_name)
    }
  end
end

if $0 == __FILE__
  f0 = Foo.new
  f0.set_opt('foo','bar') # 共通の設定

  list = get_links('http://foo.com/') # ['http://...','http://...html','...']

  begin
    # 二つの関数からフックをトラップする
    f0.get_list(list)
    f0.another_request
  hook :cache_name |file,uri|
    # この部分はイテレータとして働く
      if file =~ /.cgi/
	override_save
	true
      elsif uri =~ /hoge.cgi/
	auto_rename_and_save
	true
      elsif File.exist?(file)
	new_name = file + ".1"
	save
	true
      else
	# skip
	nil
      end # end hook
  hook :response |r1,r2,uri|
    # 第二のイテレータ
    ...
  end

  begin
    f0.get_list(another_list)
  hook :cache_name # 別の処理
    ...  
  end 
end
--