我有一個主持人調用Handler並從服務器獲取數據 另一個小部件需要相同的數據,這是現有視圖的微縮版本,但是這將在應用程序中呈現所有時間。使用GWTP處理常見的電話
這裏我常見的是調用處理程序,相同的處理程序和操作對象。
什麼是設計的最佳方式。
我可能的解決方案: 1)編寫一個可以訪問調度器對象的Common類(通過Ginjector注入),使用這些方法獲取數據。 但按照MVP體系結構,調度程序的使用僅限於演示者,但這是非演示者類。
我有一個主持人調用Handler並從服務器獲取數據 另一個小部件需要相同的數據,這是現有視圖的微縮版本,但是這將在應用程序中呈現所有時間。使用GWTP處理常見的電話
這裏我常見的是調用處理程序,相同的處理程序和操作對象。
什麼是設計的最佳方式。
我可能的解決方案: 1)編寫一個可以訪問調度器對象的Common類(通過Ginjector注入),使用這些方法獲取數據。 但按照MVP體系結構,調度程序的使用僅限於演示者,但這是非演示者類。
AFAIK沒有關於MVP
的內容,其中說一切都必須在Presenter
完成。將多個Presenters
共有的邏輯封裝在一個公共類中是有意義的。
MVP
是一種模式,而不是寫在石頭上的規則。所以,當它有意義時,你可以偏離模式。
恕我直言,普通的班級是一種正確的做法。
使用通用類來處理對後端的請求也使得例如實現緩存和認證變得容易。
有兩種方法可以做到通信之間的Presenters
和公共類:
Presenters
。從演示者可以調用普通類的方法並註冊回調。EventBus
注入普通類並從相應的Presenters
中觸發Event
(即LoadDataEvent
),並在普通類中處理此Event
。當從後端接收到數據時,您可以從公共類中觸發另一個Event
(即DataLoadedEvent
),並在相應的Presenters
中處理該數據。解決方案1 是可能更容易實現,但你有共同的階級和Presenter
之間的一些耦合(如果你使用依賴注入它不是那麼糟糕)。
解決方案2需要多一點代碼(您必須定義事件),但提供了很大的靈活性和解耦。例如,如果你創建一個新的Presenter
,這也是對你感興趣只需註冊在演示中DataLoadedEvent
處理程序中的數據和你做。
忽略這兩個選項在我心中,我deicded去與選項1 .... 在我的情況下,我必須打破MVP拱,因爲它不會幫助我............ – JAVAC 2013-03-19 11:25:34