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