Понимание шаблона делегирования в Java - PullRequest
0 голосов
/ 12 января 2012

Я изучаю шаблон делегирования здесь: http://en.wikipedia.org/wiki/Delegation_pattern Меня смутило следующее:

  1. Шаблон делегирования == Перегрузка / переопределение метода
  2. Шаблон делегирования == Полиморфизм

Является ли что-либо из вышеперечисленного истиной?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Не совсем.В простом примере java у объекта A есть метод, который поворачивается и вызывает метод для объекта B. Таким образом, вы можете сказать, что A делегирован B.

В сложном примере объект B реализует интерфейс A, но вы можете спроситьинтерфейс A, чтобы выполнить метод, и это скажет B, чтобы выполнить тот метод.

Ничто из этого не имеет большого отношения к полиморфизму или переопределению.

0 голосов
/ 12 января 2012

Ни один из них не соответствует действительности. Предположим, A делегирует что-то B, затем делегирование просто вызывает метод другого объекта B (который объект A объявил внутри) вместо того, чтобы выполнять эту задачу самим объектом A.

Да, имена методов обычно одинаковы как для A, так и для B (скорее всего, из-за здравого смысла), но это не перегрузка и не полиморфизм.

(Кроме того, делегирование может быть более сложным. Например, объект A выбирает делегата (B, C или D, ...) перед делегированием. И т. Д.)

...