MVC复杂的业务逻辑责任



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

  1. 类Video具有isFavourite()/addToFavourites()法。当调用Model时,访问数据库适配器并更新正确的值
  2. 视频和VideosManager都有isFavourite()/addToFavourites()调用。当某个方法调用video.addToFavourites()时,视频模型会调用VideoManager.addTofavouries(this)
  3. 只有VideoManager实现isFavourite(视频)/addToFavourites(视频)方法。当有人想更改收藏夹时,直接呼叫VideoManager

视频可以是特定用户的最爱。给类Video isFavorite()/addToFavorite)方法会得到错误的关系。因此,方案1和2是不可行的。

这似乎有利于选择3。但我想补充一下。什么是VideoManager?用户应该负责管理她最喜欢的视频,不是吗?

所以在我看来,应该有一个视频和用户的模型。"视频视图"可以让用户选择发出自己喜欢的信号。此操作调用一个控制器,该控制器可在用户的收藏夹集中添加/删除视频。

为什么收藏夹没有以一流的方式建模?

我将引入一个类来表示收藏夹,并将其用作执行持久性的地方(可能是通过委派给您所描述的VideoManager类)。

class Favourites {
   public void addFavourite(Video video);
   public bool removeFavourite(Video video);
}

最新更新