Saturday, August 23, 2014

Template method pattern ruby



class ReportGenerator
  
  def initialize
    @report = ""
  end
  
  def output
    prepare_header
    prepare_body
    prepare_footer
    @report
  end
  
  def prepare_header
    raise "Prepare header should be implemented"
  end
  def prepare_body
    raise "Prepare body should be implemented"
  end
  def prepare_footer
    raise "Prepare footer should be implemented"
  end
end

class TxtReportGenerator < ReportGenerator
  def prepare_header
    @report << "Txt Report header \n"
  end
  def prepare_body
    @report << "body \n"
  end
  def prepare_footer
    @report << "footer \n"
  end
end

class PdfReportGenerator < ReportGenerator
  def prepare_header
    @report << "Pdf Report header \n"
  end
  def prepare_body
    @report << "some encoded body \n"
  end
  def prepare_footer
    @report << "encoded footer \n"
  end
end

txt = TxtReportGenerator.new
pdf = PdfReportGenerator.new

puts txt.output
puts pdf.output

No comments:

Post a Comment