スーパークラスのメソッドで手順を決めておき、順番に呼び出されているメソッドについては、実装をサブクラスに任せることにする。
親クラスは、子クラスをおおよそ想定して、子クラスでオーバーライドできる抽象メソッドを用意しておく。子クラスでは差異の分だけ実装する。
要素を部品として分解し、汎用性を持たせる。そして抽象部分を抽出してそれを元に全体の実装を定義するよう
スーパークラスがアルゴリズムの不変な部分だけを定義し(テンプレート)、可変な部分の具体的な実装についてはサブクラスに任せる
処理の流れは同じで、一部の処理が違う場合に使う
おおまかな処理順をスーパークラスで決めて、
処理の詳細はサブクラスで実装します。