MVC复杂的业务逻辑责任

时间:2012-07-25 09:26:22

标签: java model-view-controller object

我对MVC有一点疑问: 例如,如果我有一个模型“视频”,应用程序允许用户添加/删除喜欢的视频(例如,处理数据库中的收藏夹)。 实施该方法的正确方法是什么?

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

2 个答案:

答案 0 :(得分:1)

为什么收藏夹也不是以头等方式建模?

我将介绍一个表示收藏夹的类,并将其用作执行持久性的位置(可能通过委派给您描述的VideoManager类。)

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

答案 1 :(得分:1)

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

这似乎有利于选项3.但我想提出一个附注。什么是VideoManager?用户应负责管理自己喜欢的视频,不是吗?

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