Template Methodパターン
Template Methodパターンは、
ある大まかな処理は一緒ですが、
それぞれの場合において、細かい部分だけが変化するような
ソフトウェアを作成したい時に、
大まかな処理をあるクラス(スーパークラス)に記述し、
そのクラスを継承するクラス(サブクラス)に、
それぞれの変化する部分の処理を記述する
デザインパターンです。
以上のように、
共通の部分をスーパークラスにまとめて、
残りの部分を各サブクラスで記述することにより、
共通部分の処理を、何度も記述しなくても良くなり、
共通部分の処理を変更させたい場合も、
そのスーパークラスだけを変更することで、
すべてのサブクラスにも適応することができます。
このTemplate Methodパターンで
クラス設計をする上で重要なのが、
リスコフの置換原則というのを守ることです。
詳細は上記の資料を参照していただきたいのですが、
一言で言うと、スーパークラスが作ったルールを、
サブクラスで壊しては行けないということです。
同じスーパークラスを継承したサブクラスであるにもかからわず、
同じ名前の関数で返り値や処理などが違うことは
してはいけないということです。
言い換えると、
ユーザ側がどのサブクラスを使っても、
同じように処理できるようにする必要があるということでもあります。
参考資料
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com