我试图理解关于活动和地点的gwt示例是如何工作的(https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces)。我想知道为什么他们为演示者定义了一个接口。我知道视图界面有助于轻松地交换视图。但是presenter接口有什么用呢?
发布于 2013-03-12 11:16:37
使用接口而不是具体的类来设计应用程序始终是一种最佳实践。
What does "program to interfaces, not implementations" mean?
发布于 2013-03-12 14:21:15
在MVP architecture中,让你的设计变得非常整洁的另一个关键因素是定义一个Presenter interface(我们已经知道JAVA中接口OOP concept的美妙之处)。
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将触发。
发布于 2013-03-12 17:51:19
除了使用界面的整洁之外,你没有理由不测试你的视图。您可以使用端到端测试,但也可以简单地使用GWTTestCase实例化视图并使用模拟呈现器。
然后你就可以测试“当我点击这个按钮时,它应该以值X,Y和Z作为参数从展示器调用这个方法”,或者“当我用这些参数调用视图的这个方法时,这样的小部件应该变成红色,而另一个小部件应该隐藏/折叠/显示/其他任何东西”。
有一次,我还用它构建了一个简单的测试床应用程序,用来用假数据手动测试UI。这个应用程序由一些按钮组成,用来模拟演示者用假数据调用视图,并用Window.alert或类似的东西处理演示者从视图中回调。您将在浏览器中启动应用程序,并单击此处和此处,然后验证视图是否按预期工作。
当您稍后将字段添加到窗体中时,这将非常有用,以确保您将其与演示者正确连接。你不想从真正的presenter设置你的GWT-RPC/RequestFactory/任何服务,当一个单元测试就足够了。
https://stackoverflow.com/questions/15348286
复制相似问题