欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

例子:
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ō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 


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

相關(guān)文章

  • Ruby簡明教程之判斷語句介紹

    Ruby簡明教程之判斷語句介紹

    這篇文章主要介紹了Ruby簡明教程之判斷語句介紹,非常簡潔的講解,可以作為語法備忘,需要的朋友可以參考下
    2014-06-06
  • 淺析Ruby的源代碼布局及其編程風格

    淺析Ruby的源代碼布局及其編程風格

    這篇文章主要介紹了淺析Ruby的源代碼布局及其編程風格,意為給大家推薦一種最為普通的Ruby代碼編寫風格,需要的朋友可以參考下
    2015-08-08
  • 對優(yōu)化Ruby on Rails性能的一些辦法的探究

    對優(yōu)化Ruby on Rails性能的一些辦法的探究

    這篇文章主要介紹了對優(yōu)化Ruby on Rails性能的一些辦法的一些探究,包括避免內(nèi)存密集型的應(yīng)用和GC等相關(guān)問題的探討,需要的朋友可以參考下
    2015-11-11
  • ruby中?%W{}和%w{}的使用案例詳解

    ruby中?%W{}和%w{}的使用案例詳解

    %w{}是Ruby中的一種快捷方式,用于創(chuàng)建一個以空格分隔的字符串數(shù)組,在使用?%w?時,Ruby?會將字符串中的空格作為分隔符,將其拆分成一個字符串數(shù)組,這篇文章主要介紹了ruby中%W{}和%w{}的使用,需要的朋友可以參考下
    2023-06-06
  • 深入分析Ruby 變量

    深入分析Ruby 變量

    這篇文章主要介紹了Ruby 變量的的相關(guān)資料,文中詳細的講解了幾種變量的概念與用法,幫助大家更好的學習,感興趣的朋友可以了解下
    2020-06-06
  • Ruby中相等性判斷的4種方法

    Ruby中相等性判斷的4種方法

    這篇文章主要介紹了Ruby中相等性判斷的4種方法,本文講解了“==” 最常見的相等性判斷、“===” 用于 case 語句的相容判斷、“equal?” 相同對象判斷、“eql?” 對象 hash 值判斷等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 使用C++來編寫Ruby程序擴展的教程

    使用C++來編寫Ruby程序擴展的教程

    這篇文章主要介紹了使用C++來編寫Ruby程序擴展的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • 舉例理解Ruby on Rails的頁面緩存機制

    舉例理解Ruby on Rails的頁面緩存機制

    這篇文章主要介紹了舉例理解Ruby on Rails的頁面緩存機制,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • ruby開發(fā)vim插件小結(jié)

    ruby開發(fā)vim插件小結(jié)

    作為一個Vimmer和Pythoner,之前折騰過用python編寫vim插件?,F(xiàn)在作為半個Rubist,又開始繼續(xù)折騰。
    2014-07-07
  • Ruby字符串、條件、循環(huán)、數(shù)組、Hash、類基本操作筆記

    Ruby字符串、條件、循環(huán)、數(shù)組、Hash、類基本操作筆記

    這篇文章主要介紹了Ruby字符串、條件、循環(huán)、數(shù)組、Hash、類基本操作筆記,需要的朋友可以參考下
    2014-06-06

最新評論