RubyでTemplate Methodパターン

Template Methodパターンは、アルゴリズムに多態性を持たせたい場合に有効。

Rubyは抽象メソッドをサポートしていないので、Reportクラスのoutput_lineメソッドでは例外を投げるようにしている。

output_start メソッドや output_end メソッドのように、
Template Methodの具象クラスによってオーバーライドできる非抽象メソッドをフックメソッド という。