クリーン アーキテクチャの使用に問題があります。Fernando Cejas のブログ投稿 http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/を読んだ方へ、私の質問はそれに基づいており、彼のコードです。
彼のサンプル プロジェクトには、ユーザーごとに 1 つのドメイン オブジェクトしかありません。そして、POJO を使えばすべてが明確になります。私が問題を抱えているのは、ユーザーが本を持っているとしましょう。一対多の関係。これをクリーン アーキテクチャでどのように処理しますか?
彼と同じように、私はいくつかのレイヤーを持っているので、ドメイン オブジェクトごとに 3 つのクラス (User、UserModel、UserEntity) と、ドメイン オブジェクトごとに 1 つのリポジトリ (UserDataRepository) があります。新しい例には、Book、BookModel、BookEntity、および BookDataRepository も含まれます。
また、CRUD のバリエーションを持つユース ケース クラスもあります。
私にとっての問題は、UI/Presenter レベルにあります。プログラムのこの時点で、UserModel オブジェクトと BookModel のリストがあります。userModel.getBooks() がありません。私は userModel.save() を持っていません (これは本の変更もすべて保存します)。
問題を強調するために、この類推を実際のユース ケースにさらに近づけるために、本のすべてのページのリストも用意しました。:) したがって、ユーザーを保存するときは、書籍、および変更された可能性のあるすべての書籍のすべてのページを保存したいと考えています。
これについてどうすればいいですか?
ボーナスの 2 番目の質問: 私の現実の問題では、基本クラスから派生したクラスがあります。上記の類推を使用すると、LeftPage と RightPage は PageBase から派生します。Book にはリストがあります。ただし、LeftPage と RightPage の両方には、別々のリポジトリ、別々のユース ケースなどがあります (しかし、これは機能しません) リストを保存するにはどうすればよいですか?? 別のユースケース SavePages を作成する必要がありますか?
if (pages.elementAt(i) instanceof LeftPage) { SaveLeftPage saveLeft = new..... } else { SaveRightPage saveRight = new..... }
私が見たすべてのドキュメントで、モデルはユースケースを知らないため、ポリモーフィズムを使用できるとは思いません。
お時間をいただきありがとうございます:)
-マイク