模板模式意味着先做一个很抽象的模板,搭一个骨架, 然后就可以让拿到模板的往里面添加东西。
给一个具体的列子吧
比如说 报告, 你到网上收下 报告的模板很多吧。 但是很多都是大同小异吧。
现在老板让你写两份报告,一份是HTML版的,一份是纯文本的。
让我们一起来建立三个class
1. Report
2. HTMLReport
3. PlaneTextReport
class Report
def initialize
@title = "html report title"
@text = ["report line 1", "report line 2", "report line 3"]
end
def output_report
output_start
output_body
output_end
end
def output_start
end
def output_body
@text.each do |line|
output_line(line)
end
end
def output_line(line)
raise 'Called abstract method !!'
end
def output_end
end
end
好了,最基本的模板弄好了
现在就可以开始弄html 的模板
class HTMLReport < Report
def output_start
puts "<html><head><title>#{@title}</title></head><body>"
end
def output_line(line)
puts "<p>#{line}</p>"
end
def output_end
puts '</body></html>'
end
end
最后就是纯文本模板了
class PlaneTextReport < Report
#
def output_start
puts "**** #{@title} ****"
end
def output_line(line)
puts line
end
end