Template Method その2

module TemplateMethod
  class Display
    def self.disp(procs)
      procs[:open].call
      procs[:_print].call
      procs[:close].call
    end
  end
end

def char_procs(str)
  { :open => proc { print "<" },
    :_print => proc { print str * 5 },
    :close => proc { puts ">" } }
end

procs = char_procs("H")
TemplateMethod::Display.disp(procs)

Template Methods的に分かりにくくなってますよねコレ。
とりあえずprocはローカル変数を保持しています。