1

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

我研究过的 PureMVC 图表和示例经常显示 Mediator 和 Proxy 之间的直接耦合。当代理的状态更新时,而不是发送一个新的通知,中介者(它从门面检索对代理的引用)更新其状态。

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

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

4

2 回答 2

2

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

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

如果您使用的是 Flex,我会推荐HydraMVC / HydraFramework,它是 PureMVC MultiCore 的 Flex 特定端口,模仿 PureMVC 的 API,但是不那么冗长,并且包括一种通过 DelegateRegistry 将服务器交互与代理分离的方法。(完全公开,我是这个项目的主要开发人员,但是它完全是 OSS 并且可以免费使用/贡献。)无论您实现哪个 MVC 框架,我仍然强烈建议通过通知完全解耦代理/中介。

于 2009-08-17T11:51:43.350 回答
2

即使您通过通知更新调解器,它也会与代理耦合,但没关系,它必须如此。

只要你不耦合代理我会说没关系。

胡安

于 2009-08-14T21:47:14.473 回答