类 Delegator

此库提供了三种不同的方法将方法调用委托给对象。最容易使用的是 SimpleDelegator。将一个对象传递给构造函数,该对象支持的所有方法都将被委托。此对象稍后可以更改。

更进一步,顶级 DelegateClass 方法允许您通过类继承轻松设置委托。这更灵活,因此可能是该库最常见的用法。

最后,如果您需要完全控制委托方案,则可以从抽象类 Delegator 继承并根据需要进行自定义。(如果您发现自己需要这种控制,请查看标准库中的 Forwardable。它可能更适合您的需求。)

SimpleDelegator 的实现是使用 Delegator 的一个很好的例子

require 'delegate'

class SimpleDelegator < Delegator
  def __getobj__
    @delegate_sd_obj # return object we are delegating to, required
  end

  def __setobj__(obj)
    @delegate_sd_obj = obj # change delegation object,
                           # a feature we're providing
  end
end

注意

请注意,RDoc 不会检测到委托方法。