在MVP

2012-01-16 38 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層相關,應與演示者分開。