2012-07-25 120 views
0

我對MVC一個小問題: 例如,如果我有一個模型「視頻」和應用程序允許用戶添加/刪除喜歡的視頻(處理您的收藏夾中,例如數據庫)。 什麼是實施的正確方法?MVC複雜的業務邏輯責任

  1. 類視頻具有isFavourite()/addToFavourites()方法。當調用模型訪問數據庫適配器並更新適當的值時。
  2. 兩個視頻的VideosManager有isFavourite()/ addToFavourites()調用。當一些方法調用video.addToFavourites(),視頻模式調用VideoManager.addToFavourites(本)
  3. 只有視頻管理實現isFavourite(視頻)/addToFavourites(視頻)方法。當有人想直接將最愛電話改爲VideoManager時。

回答

1

視頻可以是特定用戶的最愛。給類視頻isFavorite()/ addToFavorite()方法得到這個關係是錯誤的。所以選項1和2是不可行的。

這似乎青睞選項3,但我想向一個側面說明。什麼是VideoManager?用戶應該負責管理她最喜歡的視頻,不是嗎?

因此,我覺得應該有一個視頻的和用戶的模式。視頻視圖可以讓用戶發出信號表明它是最喜歡的選項。此操作調用一個控制器,用於從用戶的收藏集中添加/刪除視頻。

1

爲什麼不在第一類方法建模以及奪冠熱門?

我會介紹一個類來表示收藏夾,並將其用作執行持久化的地方(可能通過委派給您所描述的VideoManager類)。

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