Skip to content

Implementación de patrón Facade para centralizar el procesamiento de ventas #4

Description

@Omarplay11

Problema identificado:
En el diseño original, la capa de presentación (específicamente la interfaz gráfica Pnl_Content_Venta) estaba fuertemente acoplada a la capa de acceso a datos. Aunque la transacción principal ya estaba agrupada en el método realizarVenta del VentaGestionDao, la vista aún debía encargarse de preparar, desempaquetar y gestionar listas complejas de detalles, y coordinar los parámetros exactos de la base de datos para poder registrar la operación. Esto viola el principio de responsabilidad única y expone la complejidad del modelo de datos a la interfaz de usuario.

Solución propuesta:
Se implementó el patrón de diseño estructural Facade (Fachada) para crear una interfaz simplificada de comunicación entre la vista y la lógica de base de datos.

  1. Se creó la clase VentaFacade dentro del paquete de controladores.

  2. Se programó el método procesarVentaFachada, el cual recibe únicamente el objeto Cliente y el objeto compuesto BoletaCompleta (generado por el patrón Builder).

  3. Se limpió la clase Pnl_Content_Venta, eliminando la importación directa de los DAOs y reduciendo el evento de guardado a una simple llamada booleana hacia la Fachada.

Consecuencias e implicaciones del rediseño:

  1. Reducción drástica de la complejidad en la capa de presentación (Vista). Alto desacoplamiento: si en el futuro cambian las tablas o la firma del método en el DAO, la vista no sufrirá ningún cambio, solo se actualizará la Fachada. Código mucho más legible y fácil de mantener.

  2. Se introduce una nueva capa de indirección (la clase Facade) que incrementa ligeramente la cantidad de archivos del proyecto, obligando a que el flujo de datos pase por un intermediario antes de llegar al DAO.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions