我在我的教科书中看到了这个词,但我甚至不知道什么是委托。我知道什么是包含,但不知道什么是委派。
就 Ruby 的语境而言,从类接口的概念来比较委派和模块包含。
使用模块包含时,定义在模块中的方法会成为类(以及它们所有的子类)的接口的一部分。这在委派中并不是这种情况。
您能用通俗易懂的语言解释一下吗?
我在我的教科书中看到了这个词,但我甚至不知道什么是委托。我知道什么是包含,但不知道什么是委派。
就 Ruby 的语境而言,从类接口的概念来比较委派和模块包含。
使用模块包含时,定义在模块中的方法会成为类(以及它们所有的子类)的接口的一部分。这在委派中并不是这种情况。
您能用通俗易懂的语言解释一下吗?
委托简单来说,就是一个对象使用另一个对象来调用方法。
如果你有以下代码:
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
B类的一个实例在调用它的foo
方法时会使用A类的foo
方法。换句话说,B
类的实例将foo
方法委托给A
类。
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
来回答问题。
B
将使用自己的answer_to
,而不是AA
中的那个。 - Windor C