Почему медиаторы связаны с прокси в Flex PureMVC?
Я только недавно изучил платформу PureMVC, и меня немного смущает связь между объектами Proxy и Mediator. Ссылки на этой странице связаны с некоторыми документами, описывающими структуру. (Обратите внимание, что ссылки на вышеупомянутой странице открывают PDF-файлы.)
Диаграммы и примеры PureMVC, которые я изучал, часто показывают прямую связь между посредником и прокси. Когда состояние прокси-сервера обновляется, а не отправляется новое уведомление, посреднику (который получает ссылку на прокси-сервер с фасада) обновляется его состояние.
Это, безусловно, упрощает логику кода, но также напрямую связывает два, казалось бы, несопоставимых компонента. Насколько я понимаю, цель Посредника состоит в том, чтобы перевести События из представления в Уведомления PureMVC. Прокси предназначены для выполнения некоторой функции по сбору данных и ретрансляции их обратно в представление. Эти два компонента, кажется, существуют на разных уровнях приложения и, возможно, не обязательно должны быть связаны друг с другом.
Не имеет ли больше смысла, чтобы объекты Proxy отправляли свои собственные Уведомления при обновлении своего состояния, которые передаются заинтересованному Посреднику Фасадом?
2 ответа
Даже если вы обновите посредник через уведомления, он будет связан с прокси, но это нормально, так и должно быть.
Пока вы не подключите прокси, я бы сказал, что все в порядке.
Juan
Не имеет ли больше смысла, чтобы объекты Proxy отправляли свои собственные Уведомления при обновлении своего состояния, которые передаются заинтересованному Посреднику Фасадом?
Да, это именно то, что должно произойти. PureMVC - это просто реализация шаблона Notifier / Observer с облегченной структурой MVC, связанной фасадом. Я строго советую не связывать Прокси с Посредниками; Медиаторы могут отвечать на уведомления, отправляемые прокси-сервером только при изменении состояния данных. Это позволяет полностью отделить эти классы.
Если вы используете Flex, я бы порекомендовал HydraMVC / http://hydraframework.com/, который является портом PureMVC MultiCore, специфичным для Flex, однако имитирует API PureMVC, но гораздо менее многословен и включает в себя способ отсоединения взаимодействия сервера от прокси через DelegateRegistry. (Полное раскрытие информации, я являюсь основным разработчиком этого проекта, однако он полностью OSS и бесплатен для использования / вклада.) Независимо от того, какую среду MVC вы используете, я все равно настоятельно рекомендую полностью отделить Proxies / Mediators с помощью уведомлений.