2012-12-05 23 views
0

我正在使用CoreData和mogenerator並嘗試使用適當的抽象級別。我的應用程序處理從不同來源搜索,下載和播放不同類型的媒體文件(視頻和音頻)。每個媒體文件具有不同級別的元數據以及不同的下載/播放方式。我創建了一個名爲IMediaObject的協議,它對所有媒體文件都有最小量的元數據(名稱,作者等等)和方法(下載,播放,停止等)。我的具體類將符合此協議,並從NSManagedObject繼承,與CoreData一起使用,並使用mogenerator創建/修改。使用協議接口對核心數據模型進行適當的抽象?

兩個問題:

  • 上午我磁道外使用協議這裏的接口?

  • 我應該爲每種類型的媒體文件(ITunesPodcast,VimeoVideo,TumblrMP4等等)爲Core Data創建具體類,因爲這些的實現細節會有所不同嗎?還是應該爲Core Data使用單個MediaObject具體類,並使用屬性來描述每種媒體類型之間的差異?

在此先感謝

回答

0

埃裏克,

協議是用於發佈一組通用的來自不同類的行爲。繼承做類似的事情。常見的現代OOP正統教育是傾向於使用協議而不是繼承。 (爲什麼?在應用程序開發和維護的生命週期中,繼承是一種僵化的機制。)

就你而言,如果每種媒體類型的公共元數據名稱/行爲幾乎沒有重疊,那麼協議可能是您的首選路徑。

Andrew