Architettura pulita: troppe classi di casi d'uso

7

Vado in Architettura pulita e sollevo il mio livello Android da MVC a MVP , introducendo DI con Dagger 2, Reattività con RxJava 2 e, naturalmente, Java 8 .

In Architettura pulita MVP esiste un livello tra le entità (nei datastore) e i presentatori che dovrebbero accedervi. Questo livello è il "Use Case" . Un caso d'uso è idealmente un'interfaccia, che implementa UNA operazione su UN'UNITÀ.

So anche che l'architettura chiara " sta urlando ", nel senso che i suoi progetti sono molto leggibili come l'elevato numero di classi in essi contenuti.

Ora, nel mio progetto, ho qualcosa come 6 diverse entità e, naturalmente, ogni repository di entità ha almeno 4 metodi (in genere ottieni, aggiungi, elimina , aggiornamento) per accedervi .. così, 6 * 4 = 24 .

Se quello che ho capito finora di Clean Architecture, avrò 24 UseCase.

Questo è un sacco di classi se confrontato con solo 6 controller in MVC ..

Devo davvero fare 24 casi d'uso?

Apprezzerò davvero un chiarimento da parte di qualcuno già utilizzato con successo.

Grazie,  Jack

    
posta JackD 08.12.2017 - 23:29
fonte

2 risposte

16

Do I really have to make 24 use cases?

Solo se tutto ciò che scrivi è CRUD .

Fai riferimento allo schema seguente:

Latuaaffermazioneècheavraiseidiverseentitàe4metodi(Crea,Leggi,AggiornaeElimina)perognientità.Maquestoèverosolonelcerchiogialloalcentrodeldiagramma(illivelloEntità).Èinutilecreare24metodinellivelloUseCaseschepassanosemplicementeattraversolechiamateCRUDallivelloEntities.

Uncasod'usononè"Aggiungi un record cliente". Un caso d'uso è più simile a "Vendi un articolo a un cliente" (che coinvolge entità cliente, prodotto e inventario) o "stampa una fattura" (che coinvolge le stesse entità, oltre alle intestazioni delle fatture e alle righe della fattura).

Quando crei Use Case, dovresti pensare a transazioni commerciali, non metodi CRUD.

Ulteriori letture
Aggregato: un cluster di oggetti dominio che possono essere trattati come una singola unità

    
risposta data 09.12.2017 - 00:05
fonte
2

Hai ragione se ogni CRUD-Operation è tradotta in un UseCase. Ma un UseCase può anche consistere in più operazioni CRUD.

Un UseCase è un modello separato che raccoglie informazioni da diverse fonti di dati e prepara la comunicazione ai sink di dati. Ci possono essere più operazioni CRUD coinvolte.

Quindi pensa a UseCase dove creare una fattura per un cliente E creare anche il cliente stesso perché non esiste all'interno del sistema. Si dispone di un UseCase che risulta in almeno due operazioni di creazione in un'unica transazione.

    
risposta data 09.12.2017 - 00:05
fonte

Leggi altre domande sui tag