Hatena::Groupruby

kdmsnrの日記

 | 

1000-01-03

Template Method

11:28

class Report
  def initialize
    @title = 'Monthly Report'
    @text =  ['Things are going', 'really, really well.']
  end

  # テンプレートメソッド  -- 呼び出し順が決まってる
  def output_report
    output_head
    output_body
    output_foot
  end

  # 実装しないとダメ
  def outputbody
    raise 'Called abstract method: output_head'
  end

  # してもしなくてもOK -- フックメソッド
  def output_head
  end

  def output_foot
  end
end

class HTMLReport < Report
  #...
end

class PlainTextReport < Report
  #...
end

# クライアント
HTMLReport.new.output_report
PlainTextReport.new.output_report

 |