2010-09-06 42 views
2

我是新来GWT和长期的差距后,又回到了编程...我的问题是关于GWT MVP的实现,我已经通过下面的帖子不见了,他们是相当有益的,但我仍然有一些疑问控制器在实现MVP模式的gwt应用程序中应该扮演什么角色?

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中)在地方,一些答复是在水平位指示在没有主持人的管理。所以我的问题是Controller在MVP模式实现中的角色应该是什么?

我们应该从哪里启动异步服务器调用,演示者或控制器,例如,如果我必须保存记录,应该从演示者调用服务器功能(调用DAO并保存记录),或者演示者应使用后置事件事件总线和控制器作用于事件并调用服务器功能进行保存。

回答

0

的GWT教程页面,您linked to说,有关的AppController:

要处理的逻辑,是不是具体 任何演讲,并在应用层,而不是驻留 ,我们将 介绍AppController的组件。

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

至于服务器调用:有几种选择,但我个人不会从演讲者从视图中做到这一点,也没有 - 我会使用一个模型的侦听器。原因是,多个视图和演示者可以在一个模型上一起工作。当他们改变模型时,这个改变应该被发送到服务器。也许你不想立即这样做,但在发送之前收集一些更改。在这种情况下,你可以设置一个定时器 - 这是由AppController完成的。

+0

感谢您的回答,您能否详细介绍一下Model listener,它是否像演示者会使用eventBus.fireEvent触发事件,以及为许多演示者共享的模型侦听器将处理事件,侦听器将调用服务器功能。 – 2010-09-07 00:19:16

+0

@Saket:我不会为此使用EventBus。我会根据[Observer模式](http://en.wikipedia.org/wiki/Observer_pattern)实现一个'Model'类(它实际上只是几行代码),并且只要模型触发模型更改事件更改(如何触发这些变化有一些变化,一个简单的变化就是在任何模型更改时手动调用“fireChangeEvent”方法)。其中一个模型监听器将负责将更改发送到服务器(或将它们排入队列以供稍后发送)。 – 2010-09-07 00:58:57

0

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

+0

感谢响应,我下面类似的东西,想删除记录从联系人视图我呼吁从发言者自身的服务器,但是当我不得不调用其他视图ContactsEditView我做到这一点通过控制器,我做了单独的类来维持历史 – 2010-09-07 00:32:50

相关问题