我在教科书中遇到过这个问题,但我甚至不知道代表团是什么。我知道包含是什么,但不知道代表团是什么。
在Ruby的上下文中,将委托与模块包含进行比较 类接口概念的术语。
通过模块包含,模块中定义的方法成为其中的一部分 类的接口(及其所有子类)。不是这种情况 与代表团合作。
你能用外行的话来解释吗?
答案 0 :(得分:5)
简单地说,委托就是当一个对象使用另一个对象进行方法调用时。
如果你有这样的事情:
class A
def foo
puts "foo"
end
end
class B
def initialize
@a = A.new
end
def bar
puts "bar"
end
def foo
@a.foo
end
end
当调用其foo
方法时,B类的实例将使用A类的foo
方法。换句话说,B
的实例将foo
方法委托给A
类。
答案 1 :(得分:2)
class A
def answer_to(q)
"here is the A's answer to question: #{q}"
end
end
class B
def initialize(a)
@a = a
end
def answer_to(q)
@a.answer_to q
end
end
b = B.new(A.new)
p b.answer_to("Q?")
module AA
def answer_to(q)
"here is the AA's answer to question: #{q}"
end
end
class BB
include AA
end
p BB.new.answer_to("Q?")
B
将问题委托给A
,而BB
使用模块AA
来回答问题。