GWTP中的模型引发了变化事件



我们正在使用GWTP(GWT2.4)开发一个新的应用程序

关于演示者视图的设计方式——每个组件的责任,它们之间的沟通——有很多文章,但对模型组件的关注较少。

在我们的应用程序中,我们使用GWTP的Actions,并从服务器接收一些DTO,我们主要对其进行CRUD。我们有每个DTO的一些UI实体包装器。这个UI实体保存查看它所需的所有元数据(它有什么属性,它们的显示名称等),并为所有属性提供set/get。

我们想知道如何传播模型更改事件。在我看来,有两种方式:

  1. UI实体引发事件
  2. 该操作在从服务器回调时引发事件

我认为这两种方法的最大区别在于,第一个选项使模型"实时"——如果用户正在进行更改,即使没有发送到服务器,它们也会反映在应用程序中。在第二个选项中,只有当数据在服务器中实际更改时,应用程序才会知道数据更改事件。

在我看来,通常你需要两种方法,但我找不到支持第一种方法的例子:通常当考虑第一种方法时,它表明它更像是MVC设计,而不是MVP。

你觉得怎么样?有什么建议吗?

Ben

对于第一种情况,您应该能够在注册了某种侦听器的情况下使用propertychangeevent,通常,如果您有一个文本字段,则该字段上会有一个属性更改侦听器,然后每当字段更改时,就会在总线上触发一些事件。当然,您仍然需要从ui绑定到模型对象(我建议Gwittir,它做得很好)。

第二个问题是类似的,服务器通过您现有的任何手段进行回调,然后在总线上触发一个事件,该事件表示"字段有新值!!",此时各个字段(应该注册并侦听)可以决定是否侦听该事件并做出适当的反应。

因此,基本上,您的字段应该侦听总线,无论何时模型发生更改,无论是从服务器端还是用户界面端,都应该向总线发送一条消息,以便任何感兴趣的侦听器都可以处理该更改。这使设计解耦并处理这两种情况,并简化了复杂的小部件级交互。

我不认为这种设置以任何有意义的方式违反了MVP,作为一个最纯粹的MVP(当我构建MVP时),你可以让你的演示者听总线,然后告诉视图改变,但对我来说,这似乎是一个毫无意义的抽象层、耦合层和错误源,以及以后的更多工作。

如果这是对错误问题的回答,请告诉我,如果我不理解问题的微妙之处,我会编辑。

相关内容

  • 没有找到相关文章

最新更新