Introduzione
Sto implementando una classe Java astratta di un framework di elaborazione *. Implementando la funzione execute
, sono in grado di aggiungere funzionalità logiche di business. Vorrei aggiungere la registrazione all'inizio e alla fine di ogni implementazione di tutte le mie funzioni di esecuzione. Anche tra alcuni logging, se vengono fatte cose specifiche. Tuttavia, vorrei farlo in modo uniforme. Il mio pensiero era di ereditare la classe framework in una nuova classe che implementa la registrazione e fornisce alcune nuove funzioni executeWithLogging
, che stanno avvolgendo la registrazione intorno alle parti specifiche. Non sono sicuro che sia la migliore idea e se sia in grado di utilizzare un modello di progettazione che renderebbe l'intero sforzo elegante. Come andrei su tutto il resto?
Sfide (ti preghiamo di prendere in considerazione queste!)
- Una sfida nel mio caso è che la classe originale ha solo una funzione
execute
, tuttavia, avrei bisogno di accedere a più parti. - La seconda cosa è: usare un pattern decoratore (era anche la mia prima idea) non funziona, se sto usando anche un
execute
, perché la funzionesuper.execute()
dovrebbe essere chiamata nel primo linea del mio nuovoexecute()
, non è vero? - Ci sarebbero almeno 4 classi coinvolte:
BaseFunction
dal framework,LoggingFunction extends BaseFunction
da me,MyBusinessFunction extends LoggingFunction
da me,MyBusinessClass
che instanciatesMyBusinessFunction
. - Non solo ho bisogno di loggarmi all'inizio e alla fine di
execute
, ma anche nel mezzo. - Il "logging" non è solo una semplice registrazione Java, ma in realtà si collega a un database. Questo non cambia nulla sui principi, ma dimostra che la registrazione potrebbe essere più di una sola riga di codice.
Forse un esempio di come farei il tutto sarebbe bello, per farmi andare.
| * Una funzione Trident tempesta, simile a un bullone Tempesta, ma questo non è particolarmente importante.