我所了解的所有 GWT / MVP 示例似乎都过于简单,无法清楚地了解关于显示和处理稍微复杂的模型对象的最佳实践。
例如,大多数示例都类似于演示者,它将单击处理程序附加到视图上的几个文本框...如果单击保存,则调用演示者的 save() 来获取更新的值,然后我们就完成了, MVP风格。不过这不太现实。
例如,假设我们有:
PresenterX - 获取一个“模型”对象,比方说任何具有未知数量的各种原语的对象或其他任何东西
ViewX - 应该在表格中显示模型对象,和/或允许对其进行编辑/重新保存
...所以这听起来非常非常基本。但是,我们不知道模型对象中需要显示的字段数量。所以这可能与动态数量的行/列有关。对于一张桌子来说可能没有问题......但是演示者应该如何把它交给视图的桌子呢?作为视图理解的模型对象,或者将其分解为一堆列表......视图本质上仍然必须理解。
此外,某些字段可能是可编辑的,在我们获得模型对象之前是未知的(例如,模型中的某些内容决定了哪些字段是可编辑的)——那么谁应该负责确定什么是可编辑的呢?可能是演示者,但我们如何在视图中反映这一点,MVP 方式?
最后,假设视图上有一个“保存”按钮......谁的工作是找出表中所有已更改的行?
在我看来,视图要么需要更多地理解模型,要么演示者需要更多地真正理解视图——这两者都不是好的 MVP :( ...或者应该有一些中间对象。
我知道这类东西有一些更好/更新的有用方法(编辑器/请求工厂等),但我正在寻找有关上述方案的建议。