使用协议接口使用Core Data模型进行适当的抽象?

时间:2012-12-05 19:39:40

标签: ios design-patterns core-data modeling mogenerator

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

两个问题:

  • 我是否在这里使用了接口协议?

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

提前致谢

1 个答案:

答案 0 :(得分:0)

埃里克,

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

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

安德鲁