🐙
テンプレートメソッドパターンのこと始め
概要
テンプレートメソッドパターンについて実例を記載する。
題材
文字列を装飾する実装をテンプレートメソッドパターンを用いて実現する。
実例
# 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