Я хочу создать класс, который просто переадресует вызов функции каждому элементу в списке, который он содержит. Вызываемые функции объявлены в интерфейсе Так, например (псевдо-код):функции прямого вызова ко всем элементам списка
ListObjectForwarder<InterfaceFoo> interfaceFooForwarder;
interfaceFooForwarder.foo1(3,4);
должно привести следующий код:
foreach object in list
object.foo1(3,4);
и вызов
interfaceFooForwarder.foo2("hello");
должно привести в
foreach object in list
object.foo2("hello");
Итак, как вы видите: шаблон для того, как должны вызывать вызовы, всегда представляет собой цикл foreach с тем же самым вызовом и параметром. Переадресация вызовов ограничена данным интерфейсом (здесь InterfaceFoo - или egInterfaceBar)
Важной деталью является то, что вызывающий вызов функции не должен иметь значения, вызывает ли он вызов одного объекта, который непосредственно реализует интерфейс или группу/список объектов, как в этом примере.
Как я мог сделать что-то подобное на Java? Думаю, мне нужны делегаты (?), Но я не могу понять, как правильно их применить здесь.
редактировать:
Я не хотел бы реализовать foo1 и foo2 отдельно. Цель состоит в том, чтобы сказать, машина сразу «приходит вызов любой функции, сделать это на все элементы в списке»
Кроме того, я буду считать, что каждая функция возвращает пустоту
@ TheTrowser имеет смысл? – Lino
Извините, я не объяснил это достаточно хорошо. Я обновил вопрос: я бы не хотел специально реализовывать foo1 и foo2. Скорее что-то похожее на общий вызов функции с общим телом – TheTrowser
Это хорошая отправная точка! Спасибо! – TheTrowser