Eyes, JAPAN Blog > Template Methodパターン

Template Methodパターン

makuta

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

プログラミングをしていると、ほとんどの処理は同じだが一部の処理が違うクラスやメソッドをつくることがあります。完全に同じならば、既存のものを利用すれば良いのですが、一部だけ違うとなるとコピペをして一部を書き換えるということをしてしまうと思います。しかし、これだと、コピペしたものの処理にバグがあった場合、コピペして作ったすべてのものを修正する必要があるので、後々の変更に対応出来ません。そんなとき、使えるデザインパターンがTemplate Methodパターンです。

Template Methodパターンの目的は、親クラスで処理の大まかな処理を決めておいて、具体的な処理の内容をサブクラスに任せることです。一見普通の継承と変わらないのですが、「処理の一部をサブクラスで実装する」ということがポイントです。

 

Template Methodパターンのメリット

  •  共通の処理をまとめることができる

それぞれのサブクラスの共通な処理を、親クラスにまとめることができます。これにより、サブクラス側に共通な処理の部分を記述する必要がなくなり、変更が必要となった場合でも処理の大まかな処理をしているクラス(抽象クラス)側を修正するだけで済みます。

  • サブクラスで具体的な処理内容を変えることができる

親クラスで定義された抽象メソッドは、サブクラス側で具体的に実装されます。つまり、処理の大きな枠組みを変更することなく、サブクラスによって具体的な処理内容を変えることができるのです。

 
テンプレートメソッドパターンはいろいろな場面で使うことができると思います。似たような処理、似たような処理の流れが複数のクラスやメソッドで出てきたときは、Template Methodパターンを使えないかどうか検討してみてください。

ということで、スーパークラスで処理の骨組みを規定して、サブクラスで処理の内容を具体化する、Template Methodパターンについてでした。

Comments are closed.