国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

設(shè)計模式中的模板方法模式在Ruby中的應(yīng)用實例兩則

2019-10-26 19:28:50
字體:
供稿:網(wǎng)友

實例一
今天你還是像往常一樣來上班,一如既往地開始了你的編程工作。
項目經(jīng)理告訴你,今天想在服務(wù)器端增加一個新功能,希望寫一個方法,能對Book對象進行處理,將Book對象的所有字段以XML格式進行包裝,這樣以后可以方便與客戶端進行交互。并且在包裝開始前和結(jié)束后要打印日志,這樣方便調(diào)試和問題定位。
沒問題!你覺得這個功能簡直是小菜一碟,非常自信地開始寫起代碼。
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>/n"   result += "<pages>#{book.pages}</pages>/n"   result += "<price>#{book.price}</price>/n"   result += "<author>#{book.author}</author>/n"   result += "<isbn>#{book.isbn}</isbn>/n"   puts "format finished"   result  end  end 

 
調(diào)用代碼如下:

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 

你寫好了之后,迫不及待地開始運行,運行結(jié)果也完全符合你的期望。

2016316160008180.png (357×125)

項目經(jīng)理看完后,對你非常滿意,小伙效率很高的嘛!你也非常的得意。
不過兩天之后,項目經(jīng)理又找到了你,他說之前沒有考慮到需要交互的客戶端還包括手機設(shè)備,而手機設(shè)備都比較吃流量,用XML格式來傳輸太耗流量了,想最好能改成使用JSON格式傳輸。但是之前的XML格式也要保留,最好可以由客戶端指定使用哪種格式。
你有些不開心,心里低估著,為什么一開始不考慮周全呢,現(xiàn)在又要改遺留代碼。但對方畢竟是領(lǐng)導(dǎo),你還是要服從命令的,于是你開始修改Formatter類:

class Formatter   def format_book(book, format)   puts "format begins"   result = ""   if format == :xml    result += "<book_name>#{book.book_name}</book_name>/n"    result += "<pages>#{book.pages}</pages>/n"    result += "<price>#{book.price}</price>/n"    result += "<author>#{book.author}</author>/n"    result += "<isbn>#{book.isbn}</isbn>/n"   elsif format == :json    result += "{/n"    result += "/"book_name/" : /"#{book.book_name}/",/n"    result += "/"pages/" : /"#{book.pages}/",/n"    result += "/"price/" : /"#{book.price}/",/n"    result += "/"author/" : /"#{book.author}/",/n"    result += "/"isbn/" : /"#{book.isbn}/",/n"    result += '}'   end   puts "format finished"   result  end  end             
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 尼木县| 长顺县| 赤城县| 泽州县| 化州市| 望谟县| 娱乐| 浏阳市| 陵川县| 临朐县| 顺平县| 东海县| 罗江县| 宁夏| 洮南市| 柳州市| 武冈市| 环江| 彰化县| 曲周县| 沙湾县| 阜康市| 长武县| 浮山县| 四会市| 交口县| 遂平县| 阿拉善右旗| 奎屯市| 环江| 西丰县| 阜新| 项城市| 抚顺市| 东阿县| 沁水县| 平原县| 红桥区| 安顺市| 龙江县| 阿图什市|