最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開發(fā)的示例

 更新時(shí)間:2016年05月27日 18:18:15   作者:ningandjin  
Monkey Patch猴子補(bǔ)丁是指在程序解釋運(yùn)行時(shí)動(dòng)態(tài)添加類或模塊的做法,這里我們就來(lái)看一下Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開發(fā)的示例

猴子補(bǔ)?。∕onkey Patch)是一種特殊的編程技巧。Monkey patch 可以用來(lái)在運(yùn)行時(shí)動(dòng)態(tài)地修改(擴(kuò)展)類或模塊。我們可以通過(guò)添加 Monkey Patch 來(lái)修改不滿足自己需求的第三方庫(kù),也可以添加 Monkey Patch 零時(shí)修改代碼中的錯(cuò)誤。

詞源
Monkey patch 最早被稱作 Guerrilla patch,形容這種補(bǔ)丁像游擊隊(duì)員一樣狡猾。后來(lái)因?yàn)榘l(fā)音相似,被稱為 Gorilla patch。因?yàn)榇笮尚刹粔蚩蓯?ài),后改稱為 Monkey patch。

使用場(chǎng)景
以我的理解,Monkey patch 有兩種使用場(chǎng)景:
緊急的安全性補(bǔ)丁,即 Hotfix;
修改或擴(kuò)展庫(kù)中的屬性和方法。

例子:
alias:

class Monkey2 < Monkey 
 def method2 
  puts "This is method2" 
 end 
  
 alias output method2 
end 
 
monkey = Monkey2.new 
monkey.method2 
monkey.output 

include:

module Helper 
 def help 
  puts "Help..." 
 end 
  
 def method1 
  puts "helper method1..." 
 end 
end 
 
class Monkey 
 include Helper 
 def method1 
  puts "monkey method1..." 
 end 
end 
 
monkey = Monkey.new 
monkey.help 
monkey.method1#因?yàn)橹孛?,?dāng)前類的方法優(yōu)先 


undef:

class Monkey 
 def method1 
  puts "This is method1" 
 end 
end  
 
class Monkey2 < Monkey 
 def method2 
  puts "This is method2" 
 end 
end 
 
monkey = Monkey2.new 
monkey.method1  
monkey.method2 
 
class Monkey2 
 undef method1 
 undef method2 
end 
 
monkey.method1 
monkey.method2 

我們還可以使用undef_method或者remove_method實(shí)現(xiàn)undef <method_name>同樣的功能,例子如下:

class Monkey2 
 remove_method :method1 
 undef_method :method2 
nd 


在使用猴子補(bǔ)丁的時(shí)候,還應(yīng)注意如下事項(xiàng):
1、基本上只追加功能
2、進(jìn)行功能變更時(shí)要謹(jǐn)慎,盡可能的小規(guī)模
3、注意相互調(diào)用

相關(guān)文章

最新評(píng)論

宁陕县| 丹东市| 安顺市| 雅安市| 延长县| 嘉荫县| 宜城市| 静乐县| 同心县| 凤山县| 无为县| 三江| 化隆| 美姑县| 开封市| 香河县| 绥宁县| 泰宁县| 鄂尔多斯市| 新宾| 宿松县| 吉安市| 澎湖县| 乐安县| 通山县| 沁源县| 安化县| 邵阳县| 高安市| 神木县| 金寨县| 称多县| 鹰潭市| 逊克县| 多伦县| 和硕县| 张掖市| 锡林浩特市| 吉林市| 郸城县| 绵阳市|