Quando si desidera aggiungere cache, convalida dei dati, monitoraggio, persistenza o addirittura la registrazione non solo a una specifica classe o metodo, ma a un'intera gamma di essi nell'intera applicazione, si parla di cross-creare preoccupazione .
Non riesco a pensare a nessun modello software che risolva questo problema in modo pulito. E anche se il Decorator è un modello raffinato, lo troverai privo di questi problemi.
Un modo per affrontare i problemi trasversali senza rompere tutte le strutture nella tua applicazione, è l'applicazione di Programmazione orientata agli aspetti (AOP).
La premessa di base di AOP non è quella di copiare il codice che gestisce la preoccupazione trasversale in ogni luogo separato che si desidera utilizzare (violando il principio di DRY molte volte), ma piuttosto scriverlo una volta e specificare dove si voglio che sia iniettato.
Ad esempio potresti creare una funzione di registro che registra tutti i parametri per qualsiasi funzione il cui nome inizia con "set". Dipende dal quadro specifico come questo viene raggiunto e dalla notazione per specificare dove viene iniettato il codice (il codice è chiamato "consiglio ", il punto che stai cercando nella tua query è chiamato " pointcut " e i punti nel tuo principale i codici che corrispondono alla query sono chiamati "join points" ).
Generalmente il framework AOP utilizzerà
Esistono vari framework AOP per vari ambienti di programmazione.