2013-03-09 77 views
3

閱讀有關MVP模式,我發現有查看和演示之間的兩種通信模式:MVP中View和Presenter之間的通信模式是什麼?

  • View不知道主持人但提供實現HasClickHandler界面,演示註冊其事件處理程序的UI控件。

  • 查看演示知道,特別是它知道在演示,例如處理方法的名稱,當單擊查看一個提交按鈕,查看調用演示一個onSubmitButtonClicked()公共方法。

我發現後者更容易進行JUnit測試,因爲我可以直接模擬提交事件給Presenter。但是,我的理解是,View不應該知道Presenter。

第三種方法來解決權衡是讓演示註冊事件處理程序的視圖的控制,在處理程序調用的公共演示方法:

public void bind() { 
    display.getSubmitButton().addClickHandler(new ClickHandler() { 

    @Override 
    public void onClick(ClickEvent event) { 
     onSubmitButtonClicked();    
    } 
    }); 
} 

但這導致了大量的樣板代碼。

View-Presenter通信的正確模式是什麼?

回答

0

我還在努力學習這東西我自己,但我想它的方式,現在是這樣的:

public interface View { 
    void registerMouseListener(MouseListener listener); 
} 

public class ViewImpl implements View { 
    SomeComponent component; // SomeComponent extends java.awt.Component 

    public void registerMouseListener(MouseListener listener) { 
     component.addMouseListener(listener); 
    } 
} 

然後你就可以讓Presenter決定但它希望爲註冊這些事件,通過加入匿名聽衆,或延伸本身等等

相關問題