我读过很多微不足道的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