У J_A_X есть несколько хороших предложений, но я бы сказал немного дальше. Позвольте мне сделать некоторые предположения на основе предоставленной вами ограниченной информации.
- Сервисы разбросаны по всему вашему приложению, что означает, что они фактически встроены в несколько представлений.
- Если все ваши службы могут обрабатываться одним и тем же обработчиком, у вас условно есть одна служба, скопированная много раз.
Несмотря на то, что вы видите в примерах Adobe, показывающих их новый код генерации сервисов, вызывать сервисы напрямую из Views невероятно неуместно, отчасти из-за той самой проблемы, с которой вы сталкиваетесь - вы можете получить множество копий один и тот же сервисный код замусорил все ваше приложение.
В зависимости от того, насколько тесно переплетено ваше приложение (поверьте мне, я унаследовал довольно неприятные вещи, поэтому я знаю, что это легче сказать, чем сделать), вы можете обнаружить, что проще всего удалить все эти различные услуги и замените их, заставив все ваши представления отправлять всплывающее событие, которое попадает на верхний уровень. На верхнем уровне вы отвечаете на это событие, вызывая один экземпляр вашей службы, который снова обрабатывается в одном месте.
Вы можете или не можете обернуть эту единственную службу в делегате, но, как только ваше приложение будет защищено таким образом, что служба отделена от ваших представлений, вы можете сделать этот выбор в любое время.