Wchodzę w czystą architekturę i podnoszę poziom Androida z MVC do MVP , wprowadzając DI z Dagger 2, Reactivity z RxJava 2 i oczywiście Java 8.
W czystej architekturze MVP istnieje warstwa między jednostkami (w magazynach danych) a prezenterami, które powinny mieć do nich dostęp. Ta warstwa to „Przypadek użycia” . Przypadek użycia to idealnie interfejs, który implementuje JEDNĄ operację na JEDNEJ jednostce.
Wiem też, że Clear Architecture „ krzyczy ”, ponieważ jego projekty są naprawdę bardzo czytelne, ponieważ zawiera w nich dużą liczbę klas.
Teraz w moim projekcie mam około 6 różnych encji i oczywiście każde repozytorium encji ma co najmniej 4 metody (zazwyczaj pobierz, dodaj, usuń, zaktualizuj), aby uzyskać do nich dostęp. Więc 6 * 4 = 24 .
Jeśli to, co do tej pory rozumiałem z Clean Architecture, będę miał 24 UseCase.
Jest to dużo klas w porównaniu do zaledwie 6 kontrolerów w MVC ..
Czy naprawdę muszę wykonać 24 przypadki użycia?
Naprawdę docenię wyjaśnienie, które ktoś z powodzeniem wykorzystał.
Dzięki, Jack
Odpowiedzi:
Tylko jeśli wszystko, co piszesz, to CRUD .
Zobacz poniższy schemat:
Zapewniasz, że będziesz mieć sześć różnych encji i 4 metody (Utwórz, Odczytaj, Aktualizuj i Usuń) dla każdej encji. Ale dotyczy to tylko żółtego koła na środku diagramu (warstwa Istot). Nie ma sensu tworzyć 24 metod w warstwie Use Cases, które jedynie przechodzą przez wywołania CRUD do warstwy Entities.
Przypadkiem użycia nie jest „Dodaj rekord klienta”. Przypadek użycia jest bardziej podobny do „Sprzedaj przedmiot klientowi” (który obejmuje podmioty klienta, produktu i zapasów) lub „Wydrukuj fakturę” (który obejmuje te same podmioty, oprócz nagłówka faktury i pozycji wiersza faktury ).
Tworząc przypadki użycia, powinieneś myśleć o transakcjach biznesowych, a nie o metodach CRUD.
Dalsza lektura
Agregat - klaster obiektów domenowych, które można traktować jako pojedynczą jednostkę
źródło
Masz rację, jeśli każda operacja CRUD została przetłumaczona na jeden przypadek użycia. Ale UseCase może również składać się z wielu operacji CRUD.
UseCase to oddzielny model gromadzący informacje z różnych źródeł danych i przygotowujący komunikację do ujść danych. Może być zaangażowanych wiele operacji CRUD.
Pomyśl więc o UseCase, w którym tworzenie faktury dla klienta ORAZ tworzenie samego klienta, ponieważ on / ona nie istnieje w systemie. Masz jeden UseCase, który powoduje co najmniej dwie operacje Create-Operations w jednej transakcji.
źródło
Twoja definicja przypadku użycia jest niepoprawna, przypadek użycia to klasa implementująca regułę biznesową, nie musi to być operacja CRUD, może być złożoną operacją wieloetapową
źródło