Ruby 编程中的代理与装饰器模式
1. 代理模式
代理模式在 Ruby 编程中用于解决多种问题,如保护对象免受未授权访问、隐藏对象的网络位置以及延迟创建昂贵对象。
1.1 虚拟代理
虚拟代理是一种通用的代理类型。例如,可以使用虚拟代理延迟数组的创建:
array = VirtualProxy.new { Array.new }
array << 'hello'
array << 'out'
array << 'there'
这里的 VirtualProxy 会在真正需要使用数组时才进行创建。
1.2 使用 method_missing 的注意事项
在构建代理时,使用 method_missing 技术虽然可以减少编码负担,但也存在一些问题:
- 性能问题 :使用 method_missing 会有一定的性能损失。例如,对比以下两个类:
class DirectCall
def add(a, b)
a + b
end
end
class MethodMissingCall
def method_missing(name, a, b)
a + b
end
end
传统编写的
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



