我读过很多计算器和温度计的琐碎MVC例子,但似乎无法将该模式映射到实际应用中。
假设您有一个更复杂的场景。比如说您有一个需要用户登录后才能添加到购物车的网站购物车。首先,用户看到产品页面(/product/detail),然后点击添加商品(/cart/add/207366)。用户还没有登录,因此需要访问登录页面(/user/login),并且通过智能流程将他们带到购物车视图(/cart/list)。从那里,他们可以链接回原始的产品详细信息页面以继续购物。
假设我们有3个数据库表:users、usercart和products。在这种情况下,哪个是模型?整个流程会被封装到ShoppingCart模型的addProductToCartFlow函数中吗?这似乎有点凌乱,因为它需要访问用户表进行登录/身份验证,并访问产品表将产品详细信息/价格放入购物车。
相反,您是否认为ShoppingCart模型是自包含的,仅处理向购物车添加物品、删除物品等操作?用户登录的“逻辑”将在其他地方检查:也许在控制器本身?这将使控制器非常繁忙,具有相当数量的“业务逻辑”,例如检查用户是否已登录,检查购物车是否为空等,而模型只成为数据库表的漂亮名称。
或者,被登录或注销的事实是UserAuthentication模型的一部分,它处理这些功能。或者也许我们需要一个UserPageState模型来告诉我们用户是否应该在登录页面、购物车页面还是产品详细信息页面上?
在您的意见中,这种情况下最好的MVC设计是什么?