Controller在实现MVP模式的gwt应用程序中应该扮演什么角色?

时间:2010-09-06 16:03:49

标签: model-view-controller design-patterns gwt mvp gwt-mvp

我是GWT的新手并且经过长时间的差距回到编程......我的问题是关于GWT中的MVP实现,我已经完成了以下帖子并且他们非常有帮助,但我仍然有一些疑问

What are MVP and MVC and what is the difference? What's your recommendation for architecting GWT applications? MVC, MVP or custom messaging solution?

我认为MVP的GWT教程(http://code.google.com/webtoolkit/articles/mvp-architecture.html)也有控制器(AppController),一些响应在Contoller级别而不是在演示者处管理。所以我的问题是Controller应该在MVP模式实现中扮演什么角色?

我们应该从哪里启动异步服务器调用,演示者或控制器,如果我必须保存记录,我应该从Presenter调用服务器函数(调用DAO并保存记录),或者应该使用事件来演示事件发布事件总线和控制器对事件起作用并调用服务器功能进行保存。

2 个答案:

答案 0 :(得分:0)

回答你的最后一段,如果在视图上有某些东西(某个按钮)应该这样做,我会说你应该在演示者中这样做。 Presenter 逻辑与视图紧密相关(从技术上讲,它应该是弱连接,仅通过接口而不是实现)。如果你想保存一些未在视图中明确调用的动作的记录,我不会在演示者中这样做。

答案 1 :(得分:0)

linked to关于AppController的GWT教程页面:

  

处理非特定的逻辑   任何主持人,而不是居住   在应用层,我们会   介绍AppController组件。

因此,它是多个演示者,视图和模型(可能是多个模型)之间的粘合剂。它还处理浏览器历史记录。也许还有一些不是特定于一位演示者的东西。

至于服务器调用:有几个选项,但我个人不会从视图中做到,也不是来自演示者 - 我会使用模型监听器。原因是,多个视图和演示者可以在一个模型上一起工作。当他们更改模型时,应将该更改发送到服务器。也许您不想立即这样做,但在发送之前收集一些更改。在这种情况下,您可以通过AppController设置一个定时器 - 好吧。