Objective c 目的-C类遗传

Objective c 目的-C类遗传,objective-c,inheritance,dao,Objective C,Inheritance,Dao,我想问一下我面临的一个问题: 我有两个类,Photo和RemotePhoto,它们表示使用手机摄像头拍摄的照片和下载的照片RemotePhoto继承自Photo,因为它需要重新定义相同的逻辑 我将这两种照片类型的信息保存到DB中,保存在一个名为photo的表中,因为它们共享相同的详细信息,并使用一列作为标志来区分它们。 我使用DAO从DB获取照片信息 问题是: 如果一行引用本地照片,那么应该映射到photo类,否则使用RemotePhoto,我如何处理这一事实?我想在DAO实现中做出这样的区分,

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

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

问题是:

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


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

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

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


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

你应该看看类群集在Objective-C中的工作原理:好主意!我试试看。谢谢!