1)主持人不应从UI部件依赖 - 有一些原因吧:
- 在浏览UI表示的分离和应用逻辑在主持人
- 在查看和演示的接口,行为定义
- 容易编写单元测试用于演示层
- 几个视图(台式机,移动设备,等等),用于一个演示者
组简单的接口命名为MVP允许我们这两层分开:
// View interface
interface View extends AsWidget {
void setPresenter(Presenter presenter); // cross reference to presenter
interface Presenter { // presenter must extends from this interface
void onContactEditClick(); // callback from view handling in presenter without any UI code
}
}
// View realization (part)
public class ViewImpl extends Composite implements View {
@UiHandler('someButton') // or 'somelink', e.t.c.
void onContactEditClick(ClickEvent event) {
presenter.onContactEditClick();
}
}
主讲人是从触发事件控制隔离。它可以是按钮,可以是链接,e.t.c.因此,可以在每个视图中使用不同的UI控件集创建视图的多个实现(例如桌面和移动平台),并使用此视图与一个演示者一起使用。
Google MVP
2)监听相关的UI控件。在我看来,最好避免在视图和演示者之间通过接口方法(如Point1示例)使用监听器。事实上,View接口内部的Presenter接口对于来自视图的所有事件来说都是更好的监听器。
3)相同。 HasClickHanlers与View层相关,应与演示者分开。