在MVP

2012-01-16 45 views
0

实现的是如何活动中,我通过link, 去但它是一个有点困难,我听不懂的根本原因,为什么在MVP

  1. ,我们不应该用view.getSaveButton().addClickHandler()....即说为什么我们不应该在我们的显示界面中有getter? 。我从视频中了解到,在演示文稿中保留观看状态信息并不是一种好的做法,但遗憾的是我不明白这将如何帮助我们。 ?

  2. 在该视频中,还提到我们应该使用setListeners()而不是addListeners(),即避免接口中有多个侦听器。

  3. 他说他对MVP的理解不同,对于不使用HasClickHandlers(),请解释原因?

一个为什么我不能说明白点可能是在视频有很多的谷歌Wave特定代码的原因,它会一直容易,我明白了,他用一个更通用和更简单的代码让我们明白他的观点。

请原谅我,如果我冒犯了任何人。

回答

0

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层相关,应与演示者分开。