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 executeWithLoggingfunciones 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
executefunció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:
BaseFunctiondel marco,LoggingFunction extends BaseFunctionde mí,MyBusinessFunction extends LoggingFunctionde mí,MyBusinessClassque 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.
executeen BaseFunctionabstracto?
executees abstracto en BaseFunction.