デザインパターン-TemplateMethod

TemplateMethodパターンとは

Template Methodパターンは、処理の流れを基底クラスで行い、具体的な処理を継承側で行うデザインパターンです。

処理の流れがほぼ同一であるが一部が異なる場合に、当該部分を入れ替えて使用するパターンです。

大筋の処理が同じで、個別の処理が異なるサブクラスを多数作成する際などに有効となります。


構成要素

  • Abstractクラス
    • テンプレート部分を定義する抽象クラス
  • Concreteクラス
    • 個別の実装を受け持つ継承クラス

rubyによるTemplateMethodパターンの実装


#!/usr/bin/env ruby

# 抽象クラス
class Abstract
  # サブクラスに実装をまかせる抽象メソッド
  def add_open_brackets
  end
  def add_close_brackets
  end
  # この抽象クラスで実装しているメソッド
  def display(string)
    print(string)
  end
end

# 継承クラス
class Concrete1 < Abstract
  # 個別の実装
  def add_open_brackets
    print("<")
  end
  def add_close_brackets
    print(">")
  end
end

# 継承クラス
class Concrete2 < Abstract
  # 個別の実装
  def add_open_brackets
    print("(")
  end
  def add_close_brackets
    print(")")
  end
end


関連ページ