在运行时使用委派替换对象的示例

时间:2019-06-16 22:53:01

标签: oop inheritance runtime delegation

如标题中所述-有人可以给我一个在运行时使用委托将委托替换为另一个对象的示例吗?最近,我们在演讲中描述了委派的好处,但没有给出实际的示例来带来上述好处。

谢谢!

1 个答案:

答案 0 :(得分:0)

假设我们有一个这样的C#委托:

delegate int Calculate(int x, int y);

这样做的好处是,当方法foo期望在其参数中进行Calculate委托时,如下所示:

void foo(Calculate calculate)
{
    var result = calculate(1, 2);
    // ...
}

我们可以轻松地将与委托的签名匹配的任何方法传递给foo。例如,如果我们已经有类sum的方法Math,我们可以像这样简单地调用foo

foo(mathObject.sum);

像Java中一样,没有委派,我们必须使Calculate作为接口,并且必须使Math类实现Calculate。如果不允许我们修改Math类的源代码,则必须编写一个适配器(适配器设计模式)。那是很多额外的工作。