3

我一直在浏览 rails 的源代码,并找到了许多提到“委托”的地方

这是做什么的,它是如何工作的?

4

2 回答 2

2

这是官方的解释

委托(*方法)公开

提供一个委托类方法,以便轻松地将包含的对象的公共方法公开为您自己的。

class Greeter < ActiveRecord::Base
  def hello
    'hello'
  end

  def goodbye
    'goodbye'
  end
end

class Foo < ActiveRecord::Base
  belongs_to :greeter
  delegate :hello, to: :greeter
end

Foo.new.hello   # => "hello"
Foo.new.goodbye # => NoMethodError: undefined method `goodbye' for #<Foo:0x1af30c>

以下是关于它如何与示例一起使用的其他一些解释:

http://brettu.com/rails-daily-ruby-tip-20-use-the-delegate-method-in-rails-to-reduce-code/

http://www.simonecarletti.com/blog/2009/12/inside-ruby-on-rails-delegate/

http://pivotallabs.com/rails-delegates-are-even-more-useful-than-i-knew/

于 2013-08-21T06:24:08.713 回答
0

代表可帮助您保持在 LoD 内,而无需制动 SRP。

http://en.wikipedia.org/wiki/Law_of_Demeter

于 2013-08-21T08:44:22.880 回答