Мне нравится думать, делегат как «указатель на функцию». Это восходит к C-дням, но идея по-прежнему сохраняется.
Идея состоит в том, что вы должны иметь возможность ссылаться на кусок кода, но этот фрагмент кода, который вы собираетесь вызывать, неизвестен до выполнения. Таким образом, для этой цели вы используете «делегат».
Когда объект получает запрос, объект может обрабатывать сам запрос или передать запрос второму объекту для выполнения работы. Если объект решает передать запрос, вы говорите, что объект передал ответственность за обработку запроса второму объекту.
Объект-делегат - объект, с которым связан другой объект, когда что-то происходит в этом объекте. Например, ваш ремонтник является вашим делегатом, если что-то случится с вашим автомобилем. вы обратитесь к своему ремонту и попросите его исправить автомобиль для вас (хотя некоторые предпочитают сами ремонтировать автомобиль, и в этом случае они являются их собственным делегатом за
Вы не хотите выполнять кусок кода в время, когда вы запускаете программу. После запуска программы вы хотите выполнить эту часть кода всякий раз, когда происходит событие.
Без делегатов невозможно программирование пользовательского интерфейса. Поскольку вы выполняете код всякий раз, когда пользователь создает события, которые нажатие кнопки, ввод текстового поля, выбор элемента списка и т. д.
И нет причин, по которым у вас не может быть делегатов на C++ или Java. –
Итак, когда я делаю что-то вроде myO bject.delegate = myDelegateObject, что я делаю? – Artemix
Вы сообщаете myObject о вызове методов, реализуемых myDelegateObject, когда это необходимо для подачи информации или когда происходят определенные события. Эти события должны быть документированы в документах для класса myObject. myDelegateObject может также иметь другие методы и быть разработанным для выполнения других действий, помимо того, что нужно myObject в качестве делегата. –