gpt4 book ai didi

java - 使用 CellTable 实现 MVP 架构

转载 作者:行者123 更新时间:2023-12-04 05:53:54 25 4
gpt4 key购买 nike

MVP 范式假设模型和 View 通过演示者连接,但默认情况下,CellTable 需要在其构造函数中提供类型参数。那么这是否意味着不能使 CellTable 适合 MVP?

最佳答案

我已经在 MVP 中成功使用了 CellTable。关键是要理解这个架构的目的。

MVP 并不是说​​ View 对您的模型完全不可知,在 MVP 下拥有一个仅适用于您的特定模型类的 View 是可以的。要点是在演示者中保留尽可能多的模型处理和事件处理。这允许演示者代码进行有效的单元测试。任何需要浏览器环境(例如小部件)的东西都应该在 View 中,不会干扰正常的单元测试(此类组件只能使用 GwtTestCase 进行测试,速度非常慢)。

我有一个 View 接口(interface)方法来创建表,它作为 HasData 返回。在演示者绑定(bind)方法中,我调用此方法来获取表,为表实例化数据提供者,并使用任何更新的数据操作演示者中的数据提供者。

//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;
}

这允许我将 View 逻辑(列定义等)保留在它所属的 View 中,并在演示者中处理数据模型。

关于java - 使用 CellTable 实现 MVP 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9751854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com