Ruby设计模式透析:模板方法(Template Method)2014-03-15 csdn博客 guolin今天你还是像往常一样来上班,一如既往地开始了你的编程工作。项目经理告诉你,今天想 在服务器端增加一个新功能,希望写一个方法,能对Book对象进行处理,将Book对象的所有字段以XML 格式进行包装,这样以后可以方便与客户端进行交互。并且在包装开始前和结束后要打印日志,这样方 便调试和问题定位。没问题!你觉得这个功能简直是小菜一碟,非常自信地开始写起代码。Book对象代码如下:
class Bookattr_accessor :book_name, :pages, :price, :author, :isbnend
然后写一个类专门用于将Book对象包装成XML格式:
class Formatterdef format_book(book)puts "format begins"result = "<book_name>#{book.book_name}</book_name>
"result += "<pages>#{book.pages}</pages>
"result += "<price>#{book.price}</price>
"result += "<author>#{book.author}</author>
"result += "<isbn>#{book.isbn}</isbn>
"puts "format finished"resultendend
调用代码如下:
book = Book.newbook.book_name = "Programming Ruby"book.pages = 830book.price = 45book.author = "Dave Thomas"book.isbn = "9787121038150"formatter =Formatter.newresult = formatter.format_book(book)puts result
你写好了之后,迫不及待地开始运行,运行结果也完全符合你的期望。

项目经理看完后,对你 非常满意,小伙效率很高的嘛!你也非常的得意。不过两天之后,项目经理又找到了你,他说 之前没有考虑到需要交互的客户端还包括手机设备,而手机设备都比较吃流量,用XML格式来传输太耗 流量了,想最好能改成使用JSON格式传输。但是之前的XML格式也要保留,最好可以由客户端指定使用 哪种格式。