清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
class Formatter
def output_report title, text
raise 'can not call Abstract method'
end
end
class HTMLFormatter < Formatter
def output_report title, text
puts '<html>'
puts ' <head>'
puts ' <title>' + title + '</title>'
puts ' </head>'
puts ' <body>'
text.each do |line|
puts "<p>#{line}</p>"
end
puts ' </body>'
puts '</html>'
end
end
class PlainTextFormatter < Formatter
def output_report title, text
puts '******** ' + title + ' ********'
text.each do |line|
puts line
end
end
end
class Reporter
attr_reader :title, :text
attr_accessor :formater
def initialize formater
@title = 'My Report'
@text = ['This is my report', 'Please see the report', 'It is ok']
@formater = formater
end
def output_report
@formater.output_report @title, @text
end
end
Reporter.new(HTMLFormatter.new).output_report
Reporter.new(PlainTextFormatter.new).output_report