我將要問的問題受到我最近與Flex平臺(以及一些假裝實現MVC的框架)的工作的啓發,但我認爲這足以讓人們擁有各種專業知識。MVC中的M在哪裏?
對於相當多的時間,我都跟着範例,像凱恩戈姆提出的框架 -
查看,勢必調度事件單身模型的性能,和。 事件被前端控制器捕獲,並且命令得到執行。 命令調用服務,獲取數據並提供模型。 模型通過綁定隱式更新視圖。
這一切都不錯,聲音,直到我到了下面的數據結構:
用戶 擁有衆多的追隨者(用戶) 如下許多用戶 有一堆的照片 如下許多地方
照片 有很多likers(用戶) 有一個位置 有一個創作者 有許多相關的照片
Locatio ñ 有許多照片 擁有衆多的追隨者
再次,它不會使用由凱恩戈姆提出的想法,比如有一個 currentUser,currentLocation和currentPhoto一個問題,只是與它們結合。
問題出現在視圖本身。我可以想象,我有一系列複雜的「頁面」視圖,它們提供了鑽取的信息。例如,位置頁面顯示最新/熱門照片的網格,用於追隨者的面板以及基於拍攝照片的座標的地圖。這裏來的問題:
顯然,出於性能方面的原因,我無法獲取所有跟蹤特定位置的用戶或所有位置可能擁有的照片。我預取了一些,其他的將由服務器按需提供。
我想深入瞭解相同的視圖,例如,當點擊跟隨者的頭像頁面時,我應該得到該用戶照片的小格子,或者......。但我只有一個當前用戶在模型中。
這導致了一個問題,爲什麼我甚至需要綁定到一箇中央單身模型?我不能將每個視圖變成一種響應者,即視圖再次調度一次,但這次命令不是提供模型,而是直接提供調用視圖。
不會有任何耦合,因爲每個視圖都會實現IResponder。該命令只需要一個IResponder,它將從它被調用的事件中獲得。
我所看到的「模型」將扮演不同的角色。它將更像是一個緩存,一個全局的本地存儲字典,它將在命令從服務器發出請求之前通過該命令進行檢查。這樣可以節省一些對服務器的調用,但是,如果數據是非常零星的,那麼這些相同的數據將與其他數據一起被重複獲取。(我可能在緩存中有一些用戶數據,但一般情況下,爲了保持一致,我將調用服務器來收集關注者數據,無論其中是否有一部分數據可以保持一致)
對這些的任何反饋想法可以理解
它剛剛開始。 * rimshot * – jhocking 2011-06-16 20:44:57
請不要在這裏咆哮。 – Oded 2011-06-16 20:46:42
我不是在咆哮,我只是很好奇 – user802232 2011-06-16 20:47:42