Il Pattern Decorator e Java EE 6: quando il vecchio si fa nuovo con CDI

Per chi è cresciuto a pane e GoF non sarà certo la prima volta che sente parlare del Pattern Decorator. In due parole, questo pattern permette di aggiungere in modo modulare funzionalità, a compile-time, ai metodi di una classe esistente, mantenendone l’interfaccia intatta. L’aggiunta o la rimozione di queste funzionalità risulta quindi totalmente trasparente all’utilizzatore. Nel contesto attuale dello sviluppo Java, sempre più governato da “container” che risolvono automaticamente le dipendenze, implementare questo pattern poteva non essere banale fino a ieri. La nuova specifica Context and Dependancy Injection (CDI) introdotta in Java EE 6 invece supporta nativamente i decoratori: vediamo come.

AOP fai da te? No CGLIB? Haihaihaihai…

La Programmazione Orientata agli Aspetti (AOP) per alcuni è considerata il fallimento della programmazione ad oggetti perché destruttura l’architettura con cui sono collegati gli oggetti. Per altri invece è un toccasana e viene vissuta come un potenziamento della programmazione ad oggetti stessa perché permette di incapsulare certi comportamenti (aspetti, appunto) che sono trasversali al flusso di programmazione/elaborazione modellato nel grafo di oggetti che rappresenta un dominio. In questo post cercheremo di far capire cosa significa programmare ad aspetti, implementando i concetti dell’AOP nel nostro modello ad oggetti in modo semplice e diretto con il solo ausilio di CGLIB, senza scomodare nomi importanti come AspectJ e Spring AOP.