Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用干净的MVP模式填充GWT CellTable的真实示例?_Gwt_Mvp - Fatal编程技术网

使用干净的MVP模式填充GWT CellTable的真实示例?

使用干净的MVP模式填充GWT CellTable的真实示例?,gwt,mvp,Gwt,Mvp,我们正在使用GWT Presenter框架,并试图使用CellTable来构建一个可更新的网格。似乎CellTable的几个GWT构造不适合轻松地将逻辑分解为干净的视图和呈现程序代码 示例:1)在视图的构造函数中,定义了CellTable,每个列都由匿名内部类创建,这些匿名内部类扩展了column类以提供onValue()方法。2) 必须实现FieldUpdater接口,以便在用户更改单元格中的数据时提供执行逻辑。这似乎最适合演示者的onBind()方法,但FieldUpdater通常需要访问视

我们正在使用GWT Presenter框架,并试图使用CellTable来构建一个可更新的网格。似乎CellTable的几个GWT构造不适合轻松地将逻辑分解为干净的视图和呈现程序代码

示例:1)在视图的构造函数中,定义了CellTable,每个列都由匿名内部类创建,这些匿名内部类扩展了column类以提供onValue()方法。2) 必须实现FieldUpdater接口,以便在用户更改单元格中的数据时提供执行逻辑。这似乎最适合演示者的onBind()方法,但FieldUpdater通常需要访问视图中的单元格或列。CellTable没有用于获取列或单元格的访问器方法,因此演示者获取这些列或单元格的唯一方法似乎是在视图上创建大量成员变量,并在显示界面上创建访问器


有人能提供在GWT Presenter或类似MVP中处理CellTable的好例子吗?您是否试图避免模型类与视图绑定?我试着为cellTable这样做,但是维护代码变得很混乱,所以我决定让模型类和视图结合起来。在创建视图时,可以使用一些通用参数来避免这种耦合


-Saket

我认为GWT MVP的主要观点是演示者(2.1中的活动)不依赖于视图实现,因此您可以轻松地在模拟视图中交换,以便于测试

此外,可以使用依赖于演示者的视图(=调用演示者方法),但反之亦然(是的,但通过接口)

通常我只是将Presenter引用保留在视图内部,以便FieldUpdater和其他内部类可以调用Presenter中的方法。您可以将此方法放在一个接口中,但这毫无意义,因为给定类型的演示者只有一个版本

或者,如果您想让事情更加解耦,那么只需让View发送演示者收听的GWT事件