Ich gehe in die saubere Architektur und hebe mein Android-Level von MVC auf MVP , indem ich DI mit Dolch 2, Reaktivität mit RxJava 2 und natürlich Java 8 einführe.
In der MVP Clean-Architektur gibt es eine Schicht zwischen den Entitäten (in Datenspeichern) und den Präsentatoren , die auf sie zugreifen sollen. Diese Ebene ist der "Anwendungsfall" . Ein Anwendungsfall ist idealerweise eine Schnittstelle, die EINE Operation für EINE Entität implementiert.
Ich weiß auch, dass Clear Architecture " schreit ", im Sinne seiner Projekte sind sie aufgrund der hohen Anzahl von Klassen in ihnen wirklich gut lesbar.
Jetzt habe ich in meinem Projekt ungefähr 6 verschiedene Entitäten , und natürlich verfügt jedes Entitäts-Repository über mindestens 4 Methoden (normalerweise abrufen, hinzufügen, löschen, aktualisieren), um darauf zuzugreifen. Also 6 * 4 = 24 .
Wenn ich bisher von Clean Architecture verstanden habe, habe ich 24 UseCase.
Dies sind viele Klassen im Vergleich zu nur 6 Controllern in MVC.
Muss ich wirklich 24 Anwendungsfälle erstellen?
Ich werde eine Klarstellung durch jemanden, der sie bereits mit Erfolg verwendet hat, sehr schätzen.
Danke, Jack
Antworten:
Nur wenn alles, was Sie schreiben, CRUD ist .
Siehe das folgende Diagramm:
Sie behaupten, dass Sie für jede Entität sechs verschiedene Entitäten und vier Methoden (Erstellen, Lesen, Aktualisieren und Löschen) haben. Dies gilt jedoch nur für den gelben Kreis in der Mitte des Diagramms (Ebene Entitäten). Es ist sinnlos, in der Ebene "Anwendungsfälle" 24 Methoden zu erstellen, die lediglich CRUD-Aufrufe an die Ebene "Entitäten" weiterleiten.
Ein Anwendungsfall ist nicht "Hinzufügen eines Kundendatensatzes". Ein Anwendungsfall entspricht eher "Verkauf eines Artikels an einen Kunden" (an dem Kunden- , Produkt- und Inventareinheiten beteiligt sind) oder "Rechnung drucken" (an dem dieselben Einheiten beteiligt sind, zusätzlich zu Rechnungskopf und Rechnungsposten ).
Wenn Sie Anwendungsfälle erstellen, sollten Sie an Geschäftstransaktionen denken , nicht an CRUD-Methoden.
Weiterführende Literatur
Aggregat - Ein Cluster von Domänenobjekten, die als eine Einheit behandelt werden können
quelle
Sie haben Recht, wenn jede CRUD-Operation in einem UseCase übersetzt wird. Ein UseCase kann aber auch aus mehreren CRUD-Operationen bestehen.
Ein UseCase ist ein getrenntes Modell, das Informationen aus verschiedenen Datenquellen sammelt und die Kommunikation mit Datensenken vorbereitet. Es können mehrere CRUD-Operationen beteiligt sein.
Stellen Sie sich also einen UseCase vor, in dem eine Rechnung für einen Kunden erstellt UND auch der Kunde selbst erstellt wird, weil er nicht im System vorhanden ist. Sie haben einen UseCase, der zu mindestens zwei Create-Operations in einer Transaktion führt.
quelle
Ihre Definition des Anwendungsfalls ist falsch. Der Anwendungsfall ist eine Klasse, die eine Geschäftsregel implementiert. Es muss keine CRUD-Operation sein. Es kann sich um eine komplexe mehrstufige Operation handeln
quelle