キンサクプログラマー

お金儲けと技術のメモ

1. テンプレートメソッド(Template Method)

手始めはテンプレートメソッド
3.TemplateMethod パターン | TECHSCORE(テックスコア)

ある処理のおおまかなアルゴリズムをあらかじめ決めておいて、そのアルゴリズムの具体的な設計をサブクラスに任せることである。そのため、システムのフレームワークを構築するための手段としてよく活用される。
wikipediaより

なるほど。
さすがに、これくらいの説明であれば僕でも理解できる。rubyでコードに落としてみる。
抽象クラスがないので、例外が記述されたメソッドのみ定義してみた。

サンプルコード

class  Mail
  #rubyには抽象くらすがないので空っぽのメソッドで我慢
  def send
    raise "未定義だと例外を吐く"
  end
  def receive
    raise "未定義だと例外を吐く"
  end
end

class Email < Mail
  #サブクラス側で処理を記述する
  def send
    puts "メールをおくります"
  end
end

taros_mail = Email.new
taros_mail.send
taros_mail.receive


あってるのかよくわからないが、単に抽象クラスの継承を意味しているだけな気がする。
↓の記事にも同じような事がかいてあった。
qiita.com

メリット

抽象クラスのメリットと同じ。

  • 抽象クラスをオーバーライドさせる事で、共通性をもたせる
  • 未定義の場合もうっかりを防ぐ

クラス図

f:id:pikurusux:20160309003324p:plain