2014-11-06 81 views
1

我已閱讀GWT項目網站的MVP教程,該視圖應該只包含它包含的小部件的事件處理程序,並且處理它們的邏輯應該駐留在演示者中。對此,我有以下疑點:GWT中的MVP:最佳設計實踐

我們需要動態改變控件的樣式事件的基礎上,對視圖收到
  1. 很多次,所以它是有意義的移動這樣的邏輯在prsenter?

  2. 很多時候我們需要從視圖中的幾個字段中獲取數據,並創建一個對象並將它傳遞給某個窗口小部件,如cellTable,它有自己的asyncDataProvider。 因此,爲所有視圖字段創建getter和setter是否有意義,以便演示者可以訪問它們並形成對象並初始化cellTable並將對象傳遞給它? 在演示者的視圖面板中添加小部件是否是一個好主意?

  3. 到處都是我讀到將邏輯添加到演示者而不是視圖的原因是爲了增加jUnit測試覆蓋率,這可以節省時間。但是,據我所知,我們可以在View上使用模擬框架,併爲它們內部的基本邏輯編寫測試用例。

  4. 考慮到第3點,在代碼中寫入如此多的代碼(getter/setter)是否真的有意義。我相信流量應該回到主持人看來,只有當:

    a。我們需要切換視圖

    b。我們沒有數據視圖中顯示,使演示者可以通過RPC提供它

回答

1

對於初學者,請參閱從谷歌IO的Demystifying MVP and EventBus in GWTslides)介紹2013年 這是一個更新整個MVP + GWT方法應該回答你的一些疑問和問題。

一般來說,在涉及到MVP和設計應用程序的體系結構時,有許多意見和方法。所以,YMMV。

  1. 我會問自己 - 這是對數據狀態的改變嗎?或者只是對演示文稿進行更新?在後一種情況下,我會將它保留在視圖中,否則視圖的界面會不必要地膨脹。
  2. 在這種情況下,您可能需要考慮創建Editor。然後你可以使用編輯器的界面進行編輯和刷新數據 - 你不必公開所有單獨的字段。
  3. 確實如此 - 請參閱上面的介紹,其中提到在某些情況下,分隔視圖和演示者是沒有意義的。特別是當我們擁有諸如gwtmockito之類的工具時。
  4. 這取決於你如何對待你的觀點 - 他們是愚蠢的觀點,不包含邏輯,並由演示者控制?一方面,這可以實現很好的分離,另一方面,正如你所提到的,視圖的界面往往會變得非常冗長。我試圖瞄準這兩種方法之間的甜蜜點,但它確實取決於您的編碼風格和用例。
+0

該鏈接無效:404 – snorbi 2015-07-09 12:12:25

+0

@snorbi:謝謝,鏈接已更新。 – 2015-07-09 22:07:23