0

私が直面している問題についてお聞きしたいのですが、PhotoRemotePhotoの2つのクラスがあります。これは、電話のカメラを使用して撮影した写真とダウンロードした写真を表します。RemotePhotoは、同じロジックを再定義する必要があるため、 Photoを継承します。

両方の写真タイプの情報をDBの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クラスで保持されているログインを再実装する必要がある場合、継承はおそらく最善の解決策ではありません:)

2つのクラスをLocalPhoto作成します。RemotePhoto両方ともプロトコルのサブクラスでNSObjectあり、プロトコルを実装しPhotoます。DAOを取得して戻るメソッド(または、気になる場合はPhotoFactory)を用意しますid <Photo>。アプリの残りの部分は、ローカル写真かリモート写真かを気にする必要はありません。

于 2012-08-31T20:17:07.030 に答える