🐙

テンプレートメソッドパターンのこと始め

2023/10/16に公開

概要

テンプレートメソッドパターンについて実例を記載する。

題材

文字列を装飾する実装をテンプレートメソッドパターンを用いて実現する。

実例

# frozen_string_literal: true

class RawText
  def initialize(text)
    @text = text
  end

  def output
    top_text

    puts @text

    bottom_text
  end

  def top_text
    raise NotImplementedError
  end

  def bottom_text
    raise NotImplementedError
  end
end

class AsteriskText < RawText
  def top_text
    puts '***'
  end

  def bottom_text
    puts '***'
  end
end

class ExclamationMarkText < RawText
  def top_text
    puts '!!!'
  end

  def bottom_text
    puts '!!!'
  end
end

asterisk_text = AsteriskText.new('四カ国条約')
asterisk_text.output

exclamation_mark_text = ExclamationMarkText.new('四カ国条約')
exclamation_mark_text.output

実行結果は、次の通りです。

russ@penguin:~/src$ ruby template_method.rb 
***
四カ国条約
***
!!!
四カ国条約
!!!

Discussion