2009-08-14 2 views
1

Я недавно научился каркасу PureMVC и немного запутался в отношении связи между объектами Proxy и Mediator. Ссылки на странице this связаны с некоторыми документами, описывающими структуру. (Обратите внимание, что ссылки на вышеприведенной странице открывают PDF-файлы.)Почему медиаторы связаны с Proxies в Flex PureMVC?

Диаграммы и примеры PureMVC, которые я рассмотрел, часто показывают прямую связь между посредником и прокси. Когда состояние прокси обновляется, а не отправляется новое уведомление, посредник (который получает ссылку на прокси с фасада) обновляет свое состояние.

Это, безусловно, упрощает логику кода, но также напрямую соединяет два, казалось бы, разрозненных компонента. Насколько я понимаю, целью медиатора является перевести события из представления в уведомления PureMVC. Прокси предназначены для выполнения некоторой функции для сбора данных и передачи их обратно в представление. Эти два компонента, похоже, существуют в разных слоях приложения и, возможно, не обязательно должны быть связаны вместе.

Не было бы лишнего смысла, если бы объекты Proxy отправляли свои собственные Уведомления, когда их состояние обновляется, которые пересылаются заинтересованному посреднику на Фасад?

ответ

2

Даже если вы обновите посредник посредством уведомлений, он будет связан с прокси-сервером, но это нормально, это должно быть.

Пока вы не связываете прокси-сервер, я бы сказал, что все в порядке.

Хуан

+1

Извините, я не понимаю. Если посредник получает уведомление с фасада (которое было отправлено прокси), и оно содержит объект данных, который используется для обновления представления, как он связан с прокси-сервером? Вы имеете в виду, что они косвенно связаны через Уведомление? – bedwyr

+0

Извините, комментарий до этого не очень ясен. Я имею в виду, что медиаторы всегда связаны с прокси-серверами, хотя бы потому, что они должны представлять то, что «внутри» их. Взгляды вообще «нужно знать» о моделях. Для меня нет большой разницы между обновлением представления/посредником посредством уведомлений или его обновлением посредством прямого доступа к прокси (используя фасад). Пока это не так (прокси-сервер должен знать о посреднике), я думаю, что все в порядке. Надеюсь, что это имеет немного больше смысла! Juan –

+0

На самом деле это имеет больше смысла - спасибо. Я читал некоторые сообщения на форумах PureMVC, и у этой темы появилось много разных мнений, многие из которых довольно бешеные. Спасибо за ваши мысли! – bedwyr

2

Не было бы больше смысла, чтобы объекты прокси отправлять свои уведомления, когда их состояние обновления, которые пересылаются заинтересованному Посредник по фасаду?

Да, это именно то, что должно произойти. PureMVC - это просто реализация шаблона Notifier/Observer с легкой структурой MVC, соединенной с помощью Facade. Я строго советую не связывать Прокси с посредниками; только разрешить посредникам реагировать на Уведомления, которые отправляются Прокси при изменении состояния данных. Это позволяет полностью развязать эти классы.

Если вы используете Flex, я бы рекомендовал HydraMVC/HydraFramework который является Flex-специфический порт PureMVC MultiCore, имитируя API из PureMVC однако гораздо менее многословным, и включает в себя способ разъединить взаимодействия сервера с Proxies через DelegateRegistry. (Полное раскрытие информации, я являюсь основным разработчиком в этом проекте, однако это полностью OSS и свободно использовать/вносить свой вклад.) Независимо от того, какую среду MVC вы реализуете, я по-прежнему настоятельно рекомендую полностью развязать прокси/посредники через уведомления.