Introducción
Estoy implementando una clase Java abstracta de un marco de procesamiento *. Al implementar la función execute
, puedo agregar funcionalidad lógica de negocios. Me gustaría agregar el registro al inicio y al final de cada implementación de cada una de mis funciones de ejecución. También entre algunos registros, si se hacen cosas específicas. Sin embargo, me gustaría hacer esto de manera uniforme. Mi pensamiento era heredar la clase de marco a una nueva clase propia que implemente el registro y proporcione algunas executeWithLogging
funciones nuevas , que están envolviendo el registro alrededor de las partes específicas. No estoy seguro de si esa es la mejor idea y si puedo usar un patrón de diseño que haga que todo el esfuerzo sea elegante. ¿Cómo seguiría con todo el asunto?
Desafíos (¡ten en cuenta estos!)
- Un desafío en mi caso es que la clase original tiene solo una
execute
función, sin embargo, necesitaría iniciar sesión en varias partes. - La segunda cosa es: usar un patrón de decorador (también fue mi primera idea) no funciona del todo, si estoy usando también un
execute
, porque lasuper.execute()
función debería llamarse en la primera línea de mi nuevoexecute()
, ¿no? ? - Habría al menos 4 clases involucradas:
BaseFunction
del marco,LoggingFunction extends BaseFunction
de mí,MyBusinessFunction extends LoggingFunction
de mí,MyBusinessClass
que instanciaMyBusinessFunction
. - No solo necesito iniciar sesión al principio y al final
execute
, sino también en el medio. - El "registro" no es solo un simple registro de Java, sino que en realidad se registra en una base de datos. Esto no cambia nada acerca de los principios, pero demuestra que el registro puede ser más que una sola línea de código.
Tal vez un ejemplo de cómo lo haría todo sería bueno, para ponerme en marcha.
| * Una función Tridente de tormenta, similar a un rayo de tormenta, pero esto no es particularmente importante.
execute
en BaseFunction
abstracto?
execute
es abstracto en BaseFunction
.