web-dev-qa-db-ja.com

クリーンアーキテクチャ-ユースケースクラスが多すぎる

クリーンアーキテクチャに入り、Android MVCから[〜#〜] mvp [〜#〜]にレベルを引き上げます。 Dagger 2によるDIの導入、RxJava 2による反応性、そしてもちろんJava 8。

MVPクリーンアーキテクチャにはエンティティ間のレイヤー(データストア内)およびプレゼンターがアクセスする必要があります。この層はthe "Use Case"です。ユースケースは、理想的には1つのエンティティに1つの操作を実装するインターフェースです。

また、明確なアーキテクチャ "is screaming"は、そのプロジェクトの意味で、多数のクラスが含まれているため、非常に読みやすいことも知っています。

今、私のプロジェクトには6つの異なるエンティティのようなものがあります。もちろん、各エンティティリポジトリには少なくとも4つのメソッドがあります(通常、get、add、delete、update)。それらにアクセスするには.. so、6 * 4 = 24

私がClean Architectureの今までに理解したことがあれば、24のUseCaseがあります。

これはたくさんのクラス MVCの6つのコントローラーと比較した場合です。

本当に24のユースケースを作成する必要がありますか?

私はすでに成功してそれを使用している誰かによる説明を本当に感謝します。

ありがとう、ジャック

14

私は本当に24のユースケースを作らなければならないのですか?

書くものがすべて [〜#〜] crud [〜#〜] の場合のみ。

以下の図を参照してください。

enter image description here

あなたの主張は、6つの異なるエンティティと、各エンティティに対して4つのメソッド(作成、読み取り、更新、削除)があることです。しかし、それはダイアグラムの中央にある黄色の円(エンティティレイヤー)にのみ当てはまります。 ユースレイヤーで24のメソッドを作成しても、エンティティレイヤーへのCRUD呼び出しを通過するだけでは意味がありません。

ユースケースは「顧客レコードの追加」ではありません。ユースケースは、「顧客にアイテムを販売する」(顧客、製品、および在庫エンティティが関係する)または "請求書を印刷"(請求書ヘッダーと請求書明細に加えて、同じエンティティが含まれます)。

ユースケースを作成するときは、CRUDメソッド。ではなく業務トランザクションについて考える必要があります。

さらに読む
集合体-単一のユニットとして扱うことができるドメインオブジェクトのクラスター

23
Robert Harvey

すべてのCRUD-Operationが1つのUseCaseで翻訳されるのであれば、あなたは正しいです。ただし、UseCaseは複数のCRUD操作で構成される場合もあります。

UseCaseは、異なるデータソースから情報を収集し、データシンクへの通信を準備する別個のモデルです。複数のCRUD操作が含まれる可能性があります。

そのため、顧客の請求書を作成し、システム内に顧客が存在しないために顧客自体も作成するUseCaseを考えてみてください。 1つのトランザクションで少なくとも2つのCreate-Operationが発生するUseCaseが1つあります。

2
oopexpert

ユースケースの定義が間違っています。ユースケースはビジネスルールを実装するクラスです。CRUD操作である必要はなく、複雑なマルチステップ操作にすることができます

1
Buckstabue