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

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

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

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

詞源
Monkey patch 最早被稱作 Guerrilla patch,形容這種補(bǔ)丁像游擊隊員一樣狡猾。后來因為發(fā)音相似,被稱為 Gorilla patch。因為大猩猩不夠可愛,后改稱為 Monkey patch。

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

例子:
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#因為重名,當(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實現(xiàn)undef <method_name>同樣的功能,例子如下:

class Monkey2 
 remove_method :method1 
 undef_method :method2 
nd 


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

相關(guān)文章

最新評論

泊头市| 富裕县| 剑川县| 辉南县| 恭城| 林芝县| 连城县| 通辽市| 府谷县| 修武县| 涞水县| 临武县| 澎湖县| 灵山县| 棋牌| 清远市| 武安市| 通山县| 九寨沟县| 海原县| 静安区| 丹江口市| 雅江县| 和平区| 常州市| 黄骅市| 平安县| 社会| 周宁县| 扎赉特旗| 万载县| 龙山县| 广宁县| 眉山市| 江西省| 沁源县| 霍林郭勒市| 沙洋县| 石屏县| 拉萨市| 凤阳县|