0

我正在使用 CoreData 和 mogenerator 并尝试使用适当的抽象级别。我的应用程序处理来自不同来源的搜索、下载和播放不同类型的媒体文件(视频和音频)。每个媒体文件都有不同级别的元数据和不同的下载/播放方式。我创建了一个名为 IMediaObject 的协议,它具有所有媒体文件的最少数量的元数据(名称、作者等)和方法(下载、播放、停止等)。我的具体类将符合此协议并从 NSManagedObject 继承,与 CoreData 一起使用,并使用 mogenerator 创建/修改。

两个问题:

  • 我在这里使用接口协议是否偏离了轨道?

  • 我是否应该为 Core Data 的每种类型的媒体文件(ITunesPodcast、VimeoVideo、TumblrMP4 等)创建具体的类,因为它们的实现细节会有所不同?或者我应该为 Core Data 使用单个 MediaObject 具体类并使用属性来描述每种媒体类型之间的差异?

提前致谢

4

1 回答 1

0

埃里克,

协议用于发布来自不同类的一组通用行为。继承做类似的事情。常见的现代 OOP 正统观念是更喜欢使用协议而不是继承。(为什么?继承是应用程序开发和维护生命周期中的一种僵硬机制。YMMV。)

在您的情况下,如果每种媒体类型的常见元数据名称/行为几乎没有重叠,那么协议可能是您的首选路径。

安德鲁

于 2012-12-06T12:44:43.763 回答