我试着理解gwt关于活动和场所的例子是如何运作的(https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces)。我想知道为什么他们为演示者定义一个界面。我知道视图界面有助于轻松交换视图。但是演示者界面的用途是什么?
答案 0 :(得分:0)
使用接口而不是具体类来设计应用程序始终是最佳实践。
答案 1 :(得分:0)
MVP architecture中设计相当干净的另一个关键因素是定义Presenter interface
(我们已经知道OOP concept
中界面JAVA
的美丽)。
Presenter
界面,允许我们View
callback
在收到活动时加入presenter
。 Presenter接口定义以下内容:
public interface Presenter<T> {
void onAddButtonClicked();
}
然后您可以将演示者设置为您的视图,如下所示
private Presenter<T> presenter;
public void setPresenter(Presenter<T> presenter) {
this.presenter = presenter;
}
最后,当PresenterConcreteClass实现presenter
接口时,implementations
会触发。
答案 2 :(得分:0)
除了使用界面的清洁度之外,您也没有理由不测试您的视图。您可以使用端到端测试,但您也可以使用GWTTestCase
来实例化视图并使用模拟演示者。
然后你可以测试“当我点击这个按钮时,它应该从演示者调用这个方法,其中值为X,Y和Z作为参数”,或者“当我调用这个视图的方法时使用这些参数,然后这样的小部件应该变成红色而另一个应该隐藏/折叠/显示/无论什么“。
我曾经使用过它,类似地构建了一个简单的 testbed 应用程序,用虚假数据手动测试UI。该应用程序包含用于模拟演示者使用虚假数据调用视图的按钮,并使用Window.alert
或类似的东西处理来自视图的演示者调用。您可以在浏览器中启动该应用程序,然后单击此处并验证该视图是否按预期工作。
当您稍后在表单中添加字段时,这可能很有用,以确保您使用演示者正确连接它。当单元测试足够时,您不希望设置GWT-RPC / RequestFactory /来自真实演示者的任何服务。
答案 3 :(得分:0)
离我头顶的两大原因(可能还有其他人......)