簡體   English   中英

MVP:Presenter Singleton

[英]MVP: Presenter Singleton

我在我的ajax-web-application(GWT)中使用歷史管理。 當用戶按下向后或向前按鈕時,將顯示另一個視圖。 每個視圖只會創建一次。 我的問題是如何處理演示者。

我認為有兩種方法:
1.視圖保存所有數據,每次歷史更改事件后,都會創建一個新的演示者。 當模型需要一些數據時,演示者會詢問視圖數據並將其發送到模型。

2.演示者保存所有數據,在每次歷史更改事件之后,演示者將重新用於視圖。 因此,視圖僅具有ui小部件,並且用戶所做的所有更改將被重定向到演示者。

我更喜歡第二種方式,但我不確定它是否與mvp兼容。 你推薦我什么?

還有第三種方式,既不是演示者也不是視圖保存數據。 該視圖僅包含ui小部件,是一個可重用的單例。 演示者包含邏輯和本地狀態,每次調用時都會創建演示者。 通過每次調用它來創建它,確保當地的狀態是新鮮的。

作為演示者啟動的一部分,可以從服務器查詢或查詢演示者所需的外部數據,但如果您需要在演示者之間傳遞數據,則可能無效。 因此,將數據存儲在由應用程序維護的全局對象中,並且當調用演示者時,所需的特定對象通過演示者的構造函數傳遞給演示者。 通過從演示者中刪除數據並查看,您可以更加簡單,因為演示者/視圖無需管理。 如果不存在,此代碼也將從服務器獲取數據。 當用戶通過編輯將加載特定演示者/視圖的URL來訪問頁面時,它也更加健壯。 通過將數據管理移出演示者/視圖,您不必擔心演示者/視圖中的錯誤數據,因為應用程序將處理用戶實際獲得的演示者/視圖,這可能是與請求不同的頁面,因為請求的頁面對於存在的數據無效。

如果你確保演示者是輕量級的,或者或多或少沒有狀態(我的解釋),那就更不重要了。

我更願意將數據狀態加載/保存的代碼委托給從演示者調用的另一個類,並使演示者成為單例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM