Me gustaría validar algunos objetos. La validación tiene dos partes:Solución de diseño necesaria para el escenario de validación
- validación si el usuario tiene derecho a acceder al objeto (los derechos específicos ya se calculan y almacenan en valores booleanos, hay un máximo de 4 papeles)
- comprobar si el objeto está en un cierto estado (de un conjunto de estados)
que tiene un montón de reglas (en realidad alrededor de 25 en total) como los siguientes que deben ser validados:
- isOwner & & (estado == 11 || estado == 13 || == estado 14)
- ! (IsOwner & & isReceiver & & estado == 12)
- .....
He estas reglas se extendió a cabo en varios métodos, 4 o 5 en reglas un método. Si una regla falla, las demás reglas no se verifican. Necesito construir un validador (o configurar uno ya construido) en cada método que use esta validación.
Estoy buscando un patrón de diseño que facilite la construcción de una estructura para validar objetos. Mi objetivo es poder proporcionar mensajes de error específicos. Por ejemplo, si la validación falla porque el usuario no tiene derechos, entonces quiero que lo sepa. Si falló debido al estado del objeto, entonces quiero mostrar ese .
Primero pensé en el patrón del decorador. Tengo un objeto controlador de mensajes de error que podría decorarse con los mensajes de error específicos. Un decorador verificaría los derechos de los usuarios y otro para los estados. Pero el orden en el que estoy construyendo mis objetos validador no importa, por lo que no se usa el poder del patrón decorador. (AFAIK esta es una gran ventaja de usar decorador - mezcla de decoraciones). Creo que una cadena podría ser mejor para este caso ...?!?! ¿Qué alternativa de diseño recomendaría para este escenario?
¿Está utilizando .net yC#? – garik
@igor: ¿debería importar? – cherouvim
@igor: Creo que no importa, la idea es aplicable en todos los idiomas. Por cierto, estoy usando Java. – Atticus