我讀過很多微不足道的MVC計算器和溫度計的例子,但我似乎無法將模式映射到真實世界的應用程序。MVC - 它在現實世界中如何運作?
假設您有更復雜的場景。假設你有一個網站購物車,需要用戶登錄才能加入購物車。首先,用戶看到產品頁面(/ product/detail)並點擊添加項目(/ cart/add/207366)。用戶尚未登錄,因此他們需要訪問登錄頁面(/ user/login),然後對流程進行智能化,將其帶到購物車視圖(/ cart/list)。從那裏,他們可以鏈接回原始產品詳情頁面繼續購物。
假設我們有3個數據庫表:用戶,usercart和產品。這種情況下的模型是什麼?將整個流程封裝到ShoppingCart模型的addProductToCartFlow函數中?這似乎有點混亂,因爲它需要訪問用戶表進行登錄/驗證,並訪問產品表以將產品詳細信息/價格拖入購物車。
相反,你會說ShoppingCart模型是自包含的,只處理添加項目,刪除項目等從購物車?用戶登錄的「邏輯」將在其他地方進行檢查:可能是在控制器本身?這會使控制器非常繁忙,帶有相當多的「業務邏輯」,例如檢查用戶是否已登錄,檢查購物車是否空等,並且該模型只是成爲數據庫表的一個漂亮名稱。
或者,也許登錄或註銷的事實是處理這些功能的UserAuthentication模型的一部分。或者,也許我們需要一個UserPageState模型來告訴我們用戶是否應該在登錄頁面,購物車頁面或產品詳細信息頁面上?
您認爲最適合這種情況的MVC設計是什麼?
謝謝!根據您給我的反饋,我添加了一些示例代碼http://pastebin.com/f203e3d31。 請看看,讓我知道你對設計的看法。基本上,PageModel保存了用戶應該重定向到的頁面的堆棧。這樣,CartModel中的addItem()可以告訴控制器首先登錄,然後返回addItem()。 你覺得呢? – thorie 2009-04-24 17:23:51