MVP 范式假设模型和视图通过演示者连接,但默认情况下,CellTable 需要在其构造函数中提供类型参数。那么这是否意味着不能使 CellTable 适合 MVP?
问问题
901 次
1 回答
3
我已经在 MVP 中成功使用了 CellTable。关键是要理解这个架构的目的。
MVP 并不是说视图对您的模型完全不可知,在 MVP 下拥有一个仅适用于您的特定模型类的视图是可以的。要点是在演示者中保留尽可能多的模型处理和事件处理。这允许演示者代码进行有效的单元测试。任何需要浏览器环境(例如小部件)的东西都应该在视图中,不会干扰正常的单元测试(此类组件只能使用 GwtTestCase 进行测试,速度非常慢)。
我有一个 View 接口方法来创建表,它作为 HasData 返回。在演示者绑定方法中,我调用此方法来获取表,为表实例化数据提供者,并使用任何更新的数据操作演示者中的数据提供者。
//MyPresenter.java
HasData<MyClass> table = display.addTable();
ListDataProvider<MyClass> dataProvider = new ListDataProvider<MyClass>();
dataProvider.addDataDisplay(table);
//assumes results is a collection of MyClass to display.
//use for loop if you need to do some manipulation to get the objects in
dataProvider.getList().addAll(results);
//MyView.java
@Override // since this implements the definition from the view interface
public HasData<MyClass> addTable()
{
CellTable<MyClass> table = buildTable(); //boiler-plate table building code in this method
myPanel.add(table);
return table;
}
这允许我将视图逻辑(列定义等)保留在它所属的视图中,并在演示者中处理数据模型。
于 2012-04-03T07:55:45.177 回答