【问题标题】:GWT MVP implementationGWT MVP 实现
【发布时间】:2014-09-04 15:00:29
【问题描述】:

我有几个与 gwt mvp 设计相关的问题:

  • 我们可以使用事件总线通过控制器使用自定义事件将视图从一个演示者切换到另一个演示者吗?

  • 如果以上为真,自定义事件(比如changeViewEvent)是否可以包含下一个视图的名称,基于哪个控制器可以做出决定,显示哪个演示者?

  • 在应用程序中使视图可重用(作为小部件)是否是一个好的设计,虽然我不同意这一点,但如果有人对此有任何支持的话会很高兴。

PS:我所有的视图都使用自定义小部件,并且视图中没有特定于 gwt 的小部件(按钮、复选框等...)。

【问题讨论】:

  • 为什么给出-1,我问的是一个真正的问题。我只想知道这是否是一个好的设计决定。如果不是,为什么以及应该如何做?

标签: java gwt mvp


【解决方案1】:

你可以做任何你想做的事,但你必须考虑后果。例如,如果您在不创建历史事件的情况下切换视图,则当用户点击返回按钮希望看到上一个视图时,用户可能会被赶出您的应用。

我非常喜欢Activities and Places 设计模式。它处理所有问题(历史处理、书签、令牌等)。您还可以扩展它以在移动设备上切换视图时添加动画效果 - mgwt 会这样做。

【讨论】:

  • 你不能做任何你想做的事情 Andrei,还有其他程序员必须阅读代码,代码越具体,理解它所花费的时间就越多。标准规则对此有好处
  • @ZiedHamdi:这是一个很好的观点。我并不是在提倡使用完全定制的解决方案。事实上,我建议使用被广泛接受的设计模式。
【解决方案2】:

我有几个与 gwt mvp 设计相关的问题:

  • 我们可以使用事件总线通过控制器使用自定义事件将视图从一个 prsenter 切换到另一个吗?
  • 这是一种不好的做法,除非您有充分的理由这样做。由于您在不影响 url 的情况下更改视图,因此您将不知道在选定的时刻视图的状态是什么,您无法以简单的方式返回到以前的视图,最后,人们阅读代码会有困难,因为你不符合“标准”。 您的唯一参考应该是 url,您不能假设数据已加载,应用程序也不处于给定状态:每个视图都可能是您的用户导航故事的开始,因此如果您从任何其他来源获取信息比地方,你可能做错了,特别是如果你的来源是一个事件。这里唯一的特殊情况是您不希望用户以某种视图状态进入您的应用程序,因此您“强制”之前调用另一个 url,并通过从给定应用程序状态开始的事件限制对视图的访问
  • 如果以上为真,自定义事件(比如changeViewEvent)是否可以包含下一个视图的名称,基于哪个控制器可以 做个决定,要显示哪个演示者?
  • 如前所述,您正在重新发明轮子。适应现有的经过深思熟虑并涵盖大多数情况的机制要好得多。您可以在开发时放置一个 json 格式化程序来标记您的 url,这样放置变量就不是一场噩梦。完成后,创建一个更好的常规 url 格式
  • 在应用程序中使视图可重用(作为小部件)是否是一个好的设计,虽然我不同意这一点,但如果
    有人对此有任何支持。
  • 取决于您所说的视图。如果它是活动的视图,那么您可能需要在极少数情况下,最好继承一个基本视图并为每个活动分叉它的子视图(即使视图什么都不做,时间会表明它会以不同的方式发展):这更好,因为基本视图包含没有每个子活动细节的常见内容。
    • 最后,如果你说的是一个小部件的组合,一个视图,那么你绝对应该重用它们,这将使你不得不改进你的小部件和组合以不断改进,这会让你受益匪浅用于项目的其余部分,也可能用于其他项目

【讨论】:

  • 我从来没有说过要管理历史,因此你所说的前两点是无效的。
  • 如果你不说,那并不意味着你不需要它(尤其是历史!!!没有历史怎么会有人提出网络解决方案???)。它甚至意味着更少,您将永远不需要它(如果您现在实际上不需要)。我在谈论 MVP 的架构,而与您的具体问题无关,您的问题是:“我有一些与 gwt mvp 设计相关的问题”,所以我正在回答设计问题。请考虑我写了一个广泛的答案这一事实,这应该让你开心而不是搜索“无效”点。当专家与自豪的初学者交谈时会发生这种情况......
  • p.s:我来这里只是为了帮助有困难的人,因为我刚开始的时候曾经遇到过麻烦。当然我不需要你的批评者@Mohit,如果你不值得帮助,我会回答其他人,但你不会对我产生任何影响,在更糟糕的情况下你唯一会让你做的人就是你自己
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
相关资源
最近更新 更多