gpt4 book ai didi

Ruby使用Monkey Patch猴子补丁方式进行程序开发的示例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Ruby使用Monkey Patch猴子补丁方式进行程序开发的示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

猴子补丁(Monkey Patch)是一种特殊的编程技巧。Monkey patch 可以用来在运行时动态地修改(扩展)类或模块。我们可以通过添加 Monkey Patch 来修改不满足自己需求的第三方库,也可以添加 Monkey Patch 零时修改代码中的错误.

词源 Monkey patch 最早被称作 Guerrilla patch,形容这种补丁像游击队员一样狡猾。后来因为发音相似,被称为 Gorilla patch。因为大猩猩不够可爱,后改称为 Monkey patch.

使用场景 以我的理解,Monkey patch 有两种使用场景: 紧急的安全性补丁,即 Hotfix; 修改或扩展库中的属性和方法.

例子: alias

?
1
2
3
4
5
6
7
8
9
10
11
class Monkey2 < Monkey
  def method2
   puts "This is method2"
  end
  
  alias output method2
end
 
monkey = Monkey2. new
monkey.method2
monkey.output

include:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 #因为重名,当前类的方法优先

undef

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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实现undef <method_name>同样的功能,例子如下:

?
1
2
3
4
class Monkey2
  remove_method :method1
  undef_method :method2
nd

在使用猴子补丁的时候,还应注意如下事项: 1、基本上只追加功能 2、进行功能变更时要谨慎,尽可能的小规模 3、注意相互调用 。

最后此篇关于Ruby使用Monkey Patch猴子补丁方式进行程序开发的示例的文章就讲到这里了,如果你想了解更多关于Ruby使用Monkey Patch猴子补丁方式进行程序开发的示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com