【问题标题】:Proper abstraction with Core Data models using protocol interfaces?使用协议接口正确抽象核心数据模型?
【发布时间】:2012-11-23 17:49:06
【问题描述】:

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

两个问题:

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

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

    埃里克,

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

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

    安德鲁

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2012-02-12
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多