Voy a Arquitectura limpia y elevo mi nivel de Android de MVC a MVP , introduciendo DI con Dagger 2, Reactividad con RxJava 2 y, por supuesto, Java 8.
En la arquitectura limpia de MVP hay una capa entre las entidades (en los almacenes de datos) y los presentadores que deberían acceder a ellas. Esta capa es el "caso de uso" . Un caso de uso es idealmente una interfaz, que implementa UNA operación en UNA entidad.
También sé que Clear Architecture " está gritando ", en el sentido de que sus proyectos son realmente muy legibles debido a la gran cantidad de clases en ellos.
Ahora, en mi proyecto, tengo algo así como 6 entidades diferentes y, por supuesto, cada repositorio de entidades tiene al menos 4 métodos (generalmente obtener, agregar, eliminar, actualizar) para acceder a ellos ... entonces, 6 * 4 = 24 .
Si lo que entendí hasta ahora de Clean Architecture, tendré 24 UseCase.
Estas son muchas clases si se comparan con solo 6 controladores en MVC.
¿Realmente tengo que hacer 24 casos de uso?
Realmente apreciaré una aclaración de alguien que ya la usó con éxito.
Gracias Jack
Respuestas:
Solo si todo lo que escribes es CRUDO .
Hacer referencia al diagrama de abajo:
Su afirmación es que tendrá seis entidades diferentes y 4 métodos (Crear, Leer, Actualizar y Eliminar) para cada entidad. Pero eso solo es cierto en el círculo amarillo en el medio del diagrama (la capa Entidades). No tiene sentido crear 24 métodos en la capa de Casos de uso que simplemente pasan a través de llamadas CRUD a la capa Entidades.
Un caso de uso no es "Agregar un registro de cliente". Un caso de uso es más similar a "Vender un artículo a un cliente" (que involucra entidades de Cliente, Producto e Inventario) o "Imprimir una factura" (que involucra a las mismas entidades, además de Encabezado de factura y Líneas de factura )
Cuando crea casos de uso, debe pensar en transacciones comerciales, no en métodos CRUD.
Agregado de lectura adicional
: un grupo de objetos de dominio que se pueden tratar como una sola unidad
fuente
Tiene razón si cada Operación CRUD se traduce en un UseCase. Pero un UseCase también puede consistir en múltiples operaciones CRUD.
UseCase es un modelo separado que reúne información de diferentes fuentes de datos y prepara la comunicación para los sumideros de datos. Puede haber múltiples operaciones CRUD involucradas.
Entonces, piense en un UseCase donde se crea una factura para un cliente Y también se crea el cliente mismo porque él / ella no existe dentro del sistema. Tiene un UseCase que resulta en al menos dos Operaciones de creación en una transacción.
fuente
Su definición de caso de uso es incorrecta, el caso de uso es una clase que implementa una regla de negocio, no necesita ser una operación CRUD, puede ser una operación compleja de varios pasos
fuente