Para que se mantenga un buen diseño se sugiere la eliminación de una categoría a una cadena de objetos handlers, los cuales implementan una interfaz común llamada DeleteCategoryHandler. Esta interfaz define un método handle(int categoryId) que cada clase concreta implementa según su responsabilidad: validación de existencia (ExistenceValidationHandler), verificación de reglas de negocio (BusinessRuleHandler), control de permisos (PermissionCheckHandler) o la propia eliminación (PerformDeletionHandler).
La clase categoryDao ahora se limita a inicializar y ejecutar esta cadena, sin conocer los detalles específicos de cada verificación o acción. Los manejadores se encadenan dinámicamente, permitiendo agregar, quitar o reordenar pasos sin modificar la lógica general.
Para que se mantenga un buen diseño se sugiere la eliminación de una categoría a una cadena de objetos handlers, los cuales implementan una interfaz común llamada DeleteCategoryHandler. Esta interfaz define un método handle(int categoryId) que cada clase concreta implementa según su responsabilidad: validación de existencia (ExistenceValidationHandler), verificación de reglas de negocio (BusinessRuleHandler), control de permisos (PermissionCheckHandler) o la propia eliminación (PerformDeletionHandler).
La clase categoryDao ahora se limita a inicializar y ejecutar esta cadena, sin conocer los detalles específicos de cada verificación o acción. Los manejadores se encadenan dinámicamente, permitiendo agregar, quitar o reordenar pasos sin modificar la lógica general.