這是我們第一次使用這種模式(我們甚至不確定這種模式適合於這個項目),我和我的夥伴有幾個問題。 我們正在設計一個簡單的應用程序來顯示有關權限的文件。MVC設計問題 - 每個組件的角色
- 假設「Joe」當前已登錄到系統,那麼將「Joe」作爲活動用戶的正確保存位置?
控制器在這種情況下的角色是什麼?假設「Joe」想要登錄到系統。他輸入密碼並點擊登錄,視圖是否應該直接使用模型驗證細節?還是應該要求管制員爲他做?
假設登錄成功,現在會發生什麼?視圖應該作爲觀察者監聽模型並等待登錄正確的響應,然後切換窗口?還是應該控制器有一個名爲
boolean ValidateLogin()
的方法,視圖會調用並相應地執行?
正如你所看到的,我們很困惑,任何幫助將不勝感激。
的第一個問題可能需要澄清。通過「保存」,您是否意味着由於UI操作而導致的特定模型操作?如果是這樣,那是一個與模型對話的Controller函數。或者如果你的意思是「維持喬作爲活躍用戶」,那麼這是會話的一個特點,我認爲這是會計師的責任。 – halfer
@halfer每個用戶在登錄時顯示他有權查看的所有文件。現在,假設模型有一個方法getFiles(用戶用戶),它返回'用戶'有權查看的文件列表。誰應該提供'用戶'?模型應該知道活躍用戶是誰?管理員應該知道活躍用戶是誰? – Shmoopy
對,竅門:模型肯定不會知道活躍用戶是誰。這應該由控制器維護和讀取,並提供給模型方法(這與單元測試有助於分離)。你的方法很好:模型中的'getFiles(用戶用戶)'意味着必須提供'user'給它 - 這是控制器的工作。 [這個答案](http://stackoverflow.com/a/9554149/472495)也可能有助於解決用戶安全問題。 – halfer