Пример использования делегирования для замены объекта во время выполнения - PullRequest
0 голосов
/ 17 июня 2019

Как указано в заголовке - может ли кто-нибудь дать мне пример использования делегирования для замены делегата другим объектом во время выполнения? Недавно мы описали преимущества делегирования на лекции, но не было приведено никакого реального примера вышеупомянутого преимущества.

Заранее спасибо!

1 Ответ

0 голосов
/ 17 июня 2019

Допустим, у нас есть делегация 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, мы должны написать адаптер (шаблон проектирования адаптера). Это много дополнительной работы.

...