首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC复杂业务逻辑责任

问MVC复杂业务逻辑责任
EN

Stack Overflow用户
提问于 2012-07-25 09:26:22
回答 2查看 90关注 0票数 0

我有一个关于MVC的小问题:例如,如果我有一个“视频”模型,并且应用程序允许用户添加/删除最喜欢的视频(例如,在数据库中处理最喜欢的视频)。实现这一目标的正确方法是什么?

  1. 类视频有isFavourite() /方法。当被调用时,模型访问数据库适配器并更新适当的值。
  2. VideosManager的两个视频都有isFavourite() / addToFavourites()调用。当某些方法调用video.addToFavourites(),时,视频模型调用VideoManager.addToFavourites(this)
  3. 只有isFavourite(Video) / addToFavourites(Video)方法由VideoManager实现。当有人想改变最喜欢的调用时,直接调用VideoManager。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-25 09:40:37

视频可以是特定用户的最爱。给出类isFavorite()/addToFavorite()方法的这种关系是错误的。因此,选择1和2是不可行的。

这似乎倾向于备选方案3,但我想作一个附带说明。什么是VideoManager?用户应该负责管理她最喜欢的视频,不是吗?

因此,在我看来,应该有一个模型的视频和用户。视频视图可以供用户选择,以表示它是最喜欢的。此操作调用一个控制器,该控制器从用户的收藏集中添加/删除视频。

票数 1
EN

Stack Overflow用户

发布于 2012-07-25 09:30:20

为什么最受欢迎的人也不以一流的方式建模呢?

我将引入一个类来表示最喜欢的类,并将其用作执行持久化的位置(可能是将其委托给您所描述的VideoManager类)。

代码语言:javascript
复制
class Favourites {
   public void addFavourite(Video video);
   public bool removeFavourite(Video video);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11646646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档