没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
设计模式中的模板方法模式在设计模式中的模板方法模式在Ruby中的应用实例两则中的应用实例两则
主要介绍了设计模式中的模板方法模式在Ruby中的应用实例两则,经典的项目经理例子在这里又被套上用了^^需要
的朋友可以参考下
实例一实例一
今天你还是像往常一样来上班,一如既往地开始了你的编程工作。
项目经理告诉你,今天想在服务器端增加一个新功能,希望写一个方法,能对Book对象进行处理,将Book对象的所有字段以
XML格式进行包装,这样以后可以方便与客户端进行交互。并且在包装开始前和结束后要打印日志,这样方便调试和问题定位。
没问题!你觉得这个功能简直是小菜一碟,非常自信地开始写起代码。
Book对象代码如下:
class Book
attr_accessor :book_name, :pages, :price, :author, :isbn
end
然后写一个类专门用于将Book对象包装成XML格式:
class Formatter
def 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"
result
end
end
调用代码如下:
book = Book.new
book.book_name = "Programming Ruby"
book.pages = 830
book.price = 45
book.author = "Dave Thomas"
book.isbn = "9787121038150"
formatter = Formatter.new
result = formatter.format_book(book)
puts result
你写好了之后,迫不及待地开始运行,运行结果也完全符合你的期望。
项目经理看完后,对你非常满意,小伙效率很高的嘛!你也非常的得意。
不过两天之后,项目经理又找到了你,他说之前没有考虑到需要交互的客户端还包括手机设备,而手机设备都比较吃流量,用
XML格式来传输太耗流量了,想最好能改成使用JSON格式传输。但是之前的XML格式也要保留,最好可以由客户端指定使用哪
种格式。
你有些不开心,心里低估着,为什么一开始不考虑周全呢,现在又要改遗留代码。但对方毕竟是领导,你还是要服从命令的,于
是你开始修改Formatter类:
class Formatter
def format_book(book, format)
puts "format begins"
result = ""
if format == :xml
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>\n"
elsif format == :json
result += "{"
result += "\"book_name\" : \"#{book.book_name}\","
资源评论
weixin_38581455
- 粉丝: 2
- 资源: 895
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机毕业设计:python+爬虫+cnki网站爬
- nyakumi-lewd-snack-3-4k_720p.7z.002
- 现在微信小程序能用的mqtt.min.js
- 基于MPC的非线性摆锤系统轨迹跟踪控制matlab仿真,包括程序中文注释,仿真操作步骤
- shell脚本入门-变量、字符串, Shell脚本中变量与字符串的基础操作教程
- 基于MATLAB的ITS信道模型数值模拟仿真,包括程序中文注释,仿真操作步骤
- 基于Java、JavaScript、CSS的电子产品商城设计与实现源码
- 基于Vue 2的zjc项目设计源码,适用于赶项目需求
- 基于跨语言统一的C++头文件设计源码开发方案
- 基于MindSpore 1.3的T-GCNTemporal Graph Convolutional Network设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功