Enfoque de validación de datos comerciales en java

Estoy atrapado en un tema bastante complejo. Estoy tratando de encontrar una solución universal para la validación de datos. Tenemos un sistema similar al sistema de gestión de clientes de la compañía de teléfonos celulares, donde los clientes tienen sus cuentas llenas de información (costos, pagos, información personal, archivo de eventos, deudas, etc.) y necesito validar estos datos en múltiples situaciones. No puedo olvidar que hay varias cuentas y algunas de ellas necesitan validación específica. Lo que no puedo entender es un sistema universal, simple y reutilizable para este trabajo.

La idea principal es que habrá muchas "restricciones" que se utilizarán (como: el cliente debe tener un nombre, si hay una deuda, no puede haber un sobrepago, etc.), y también habrá situaciones definidas (como la cancelación de la cuenta , demanda de pago, envío, etc.) cuando quiero validar datos (la ejecución de la validación desde el código no es el tema aquí). La situación tendrá una lista de restricciones validadas o ejecutadas para ello. Esto es lo que queremos.

Pero, ¿cuál es el enfoque correcto de Java para esto? ¿Deberían todas las situaciones y restricciones ser clases? Las situaciones tendrán instancias de restricciones, y las instancias tendrán métodos validate ()? Pero cada uno tendrá diferentes argumentos. ¿Alguna otra idea?

Lo sé, la respuesta aquí puede ser larga, por lo que agradeceré dirigirme sobre alguna documentación sobre ese tema. Muchas gracias por las respuestas!

Respuesta 1

Echa un vistazo a estos patrones:

Patrón de estrategia

Patrón de cadena de responsabilidad

Ambos son útiles para construir una cadena de validación / cadena de Reglas de Negocio

Respuesta: 2

A mí me suena como Visitante :

Tiene numerosos tipos de entidad, todos tienen una cosa en común: el validate()método. En caso de que necesite diferentes estrategias de validación para el mismo tipo de entidad, puede usar la Cadena de responsabilidad dentro de cada método de validación, por ejemplo, para el primer validador de nombre de ejecución de cuenta y luego el validador de dirección, el validador de equilibrio, etc.

Buena suerte

Respuesta: 3

Es posible que necesite un motor de reglas? http://java-source.net/open-source/rule-engines

Respuesta: 4

En laravel 5.8, / "vue": "^ 2.5.17" / "axios": "^ 0.18", necesito leer los datos externos que se leen desde el cartero ok: https://imgur.com/a/SRBmK0P I intente leer estos datos usando axios y obtuve un error: ...

Estoy buscando si es posible agregar un elemento ("acerca de" la aplicación) en el menú del sistema Winwdows del JFrame actual. Como se sugiere en esa respuesta, sé que podría ser posible ajustar ...

He convertido un proyecto Maven en un jar y ahora, estoy tratando de importar este Jar a la biblioteca de un nuevo proyecto no Maven. Traté de escribir el método principal por mi cuenta para llamar al tarro Maven ...

Al escribir el código de la base de datos, generalmente evito que se produzca una excepción ConstraintViolationException al verificar los registros antes de actualizar o insertar. No espero una ContraintViolationException para ...