• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby使用Monkey Patch猴子补丁方式进行程序开发的示例

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了monkey patch,monkey.patch all,ruby,ruby碧玺,ruby woo口红等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

词源
Monkey patch 最早被称作 Guerrilla patch,形容这种补丁像游击队员一样狡猾。后来因为发音相似,被称为 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 

</div>

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#因为重名,当前类的方法优先 

</div>


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 

</div>

我们还可以使用undef_method或者remove_method实现undef <method_name>同样的功能,例子如下:

class Monkey2 
 remove_method :method1 
 undef_method :method2 
nd 

</div>


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

</div>

您可能想查找下面的文章:

  • Monkey Patch猴子补丁编程方式及其在Ruby中的运用
  • Ruby使用Monkey Patch猴子补丁方式进行程序开发的示例

相关文章

  • 举例理解Ruby on Rails的页面缓存机制
  • Rails link_to 详解
  • ruby实现网页图片抓取
  • Rails应用程序中同时修改操作冲突问题的解决方案
  • Ruby实现发送邮件的两个方法
  • Ruby中相等性判断的4种方法
  • 使用Ruby来处理JSON的简单教程
  • Ruby的安装与运行
  • Ruby中proc和lambda的两个区别
  • ruby 小脚本搞定CVS服务器更换后checkout下来的工程迁移

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby中对一元操作符重载实例
    • 设计模式中的观察者模式在Ruby编程中的运用实例解析
    • Terry七月Ruby读书笔记(比较详细)第1/4页
    • Ruby实现网页图片抓取
    • 在Ruby中处理日期和时间的教程
    • 详解Ruby语言中的注释用法与中文编码问题
    • ruby 单态方法 分析
    • 用Ruby进行CGI编程的入门指引
    • Ruby基础知识之类
    • 详解组合模式的结构及其在Ruby设计模式编程中的运用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有