Ruby设计模式:

模板方法:定义一个操作中的算法的骨架 而将一些步骤的实现延迟到子类中 模板方法使得之类可以不改变算法的结构既可重定义该算法的某些特定步骤。

#%()用来定义单行字符串---包含“并且有字符串插值classReportdefoutput;puts"#{report_start}#{report_body}#{report_end}";enddefreport_body%(\nbody\n)endendclassHtmlReport<Reportdefreport_start%(<html>)enddefreport_end%(</html>)endendclassTextReport<Reportdefreport_start%(=start=)enddefreport_end%(=end=)endendTextReport.new.outputHtmlReport.new.output

结果:

=start=

body

=end=

<html>

body

</html>