Miglior pattern per tracciare le azioni all'interno di un presentatore

4

Ho un'implementazione MVP, all'interno del mio presentatore ho un sacco di metodi pubblici come onSendMessage () per esempio.

Ho bisogno di tracciare alcuni di questi metodi, il che significa che la traccia chiama semplicemente trackClient.trackSendMessage ().

Quelle azioni potrebbero essere più di 20 in più o in meno e non voglio sporcarmi il mio presentatore con un po 'di logica su dovrebbe tracciare qualsiasi azione o meno. Alcune di queste azioni richiedono una logica sullo stato della vista corrente, come se fosse visibile qualsiasi cosa pensi o no.

Che modello pensi che dovrei usare qui? Forse un decoratore?

    
posta colymore 30.05.2016 - 12:49
fonte

1 risposta

2

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.

    
risposta data 30.05.2016 - 14:30
fonte

Leggi altre domande sui tag