【发布时间】:2013-08-21 06:15:21
【问题描述】:
我一直在浏览 rails 的源代码,发现很多提到“委托”
这是做什么的以及它是如何工作的?
【问题讨论】:
标签: ruby-on-rails ruby oop delegates
我一直在浏览 rails 的源代码,发现很多提到“委托”
这是做什么的以及它是如何工作的?
【问题讨论】:
标签: ruby-on-rails ruby oop delegates
委托(*方法)公开
提供一个委托类方法,可以轻松地将包含对象的公共方法公开为您自己的。
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/
【讨论】:
代理可帮助您保持在 LoD 内,而不会阻碍 SRP。
【讨论】: