为什么Mediators与Flex PureMVC中的Proxies相结合?

时间:2009-08-14 19:15:13

标签: flex coupling puremvc

我刚刚学习了PureMVC框架,并且对于Proxy和Mediator对象之间的耦合感到有些困惑。 this页面上的链接连接到描述框架的一些文档。 (请注意,上述页面上的链接打开PDF。)

我检查过的PureMVC的图表和示例经常显示Mediator和Proxy之间的直接耦合。更新代理的状态时,Mediator(从Facade检索对代理的引用)的状态不会更新,而是发送新的通知。

这似乎简化了代码的逻辑,但它也直接将两个看似不同的组件耦合在一起。据我了解,Mediator的目的是将事件从视图转换为PureMVC通知。代理意味着执行某些功能来收集数据并将其转发回视图。这两个组件似乎存在于应用程序的不同层中,也许不一定要耦合在一起。

让代理对象在状态更新时发送自己的通知会不会更有意义,这些通知会由Facade转发给感兴趣的Mediator?

2 个答案:

答案 0 :(得分:2)

即使你通过通知更新中介,它也会被耦合到代理,但没关系,它必须是。

只要您不联系代理,我就会说没关系。

答案 1 :(得分:2)

  

让代理对象在状态更新时发送自己的通知会不会更有意义,这些通知会由Facade转发给感兴趣的Mediator?

是的,这正是需要发生的事情。 PureMVC只是一个Notifier / Observer模式实现,具有由Facade链接的轻量级MVC结构。我严格建议不要将代理人联系到调解员;仅允许Mediators在数据状态更改时响应代理发送的通知。这允许这些类完全解耦。

如果您使用的是Flex,我建议使用HydraMVC / HydraFramework这是PureMVC MultiCore的Flex特定端口,模仿PureMVC的API但是不那么详细,并且包含了一种方法通过DelegateRegistry从Proxies中分离服务器交互。 (完全公开,我是该项目的主要开发人员,但它完全是OSS并且可以自由使用/贡献。)无论您实施哪个MVC框架,我仍然强烈建议通过通知完全解耦Proxies / Mediators。