0

我想问一个我面临的问题:我有两个类,PhotoRemotePhoto,它代表使用手机相机拍摄的照片和下载的照片。RemotePhoto继承自Photo,因为它需要重新定义相同的逻辑。

我将两种照片类型信息都保存到数据库中,在一个名为Photo的表中,因为它们共享相同的详细信息,并使用一列作为标志来区分它们。我使用 DAO 从 DB 获取照片信息。

问题是:

如果一行引用本地照片应该映射到Photo类,否则使用RemotePhoto,我该如何管理这一事实?我想在 DAO 实现中做出这样的区分,但我想知道是否有一些缺点。我还想知道是否可以利用一些 ObjectiveC 特性以一种优雅的方式完成这一任务(所以,也许,我可以学到一些新东西;)。

最后,如果有人遇到类似的问题,我也对一些不同的 DB 组织提案感兴趣:直到现在我还没有在 DB 上保存远程照片信息,所以我及时更新 DB 模式 :)!

4

2 回答 2

1

如果你的类是 NSObjects,你可以使用 isKindOfClass(RemotePhoto) 来判断对象是否是 RemotePhoto

于 2012-08-31T20:05:29.663 回答
0

您是否考虑过使用协议而不是继承。如果您的 RemotePhoto 类必须重新实现 Photo 类中保存的登录名,那么继承可能不是最好的解决方案:)

创建两个类:它们都是协议的子类LocalPhoto并实现了协议。有一个方法(或 PhotoFactory,如果你喜欢的话)可以接受你的 DAO 并返回. 您的应用程序的其余部分不需要关心它是本地照片还是远程照片。RemotePhotoNSObjectPhotoid <Photo>

于 2012-08-31T20:17:07.030 回答