Similmente all'Adapter Pattern, che si occupa di modificare l'interfaccia/la struttura di un oggetto, il pattern Façade, si occupa di modificare l'interfaccia di una funzionalità/funzione.
Lo scopo di questo pattern è di fornire un'interfaccia di alto livello per nascondendo la complessità sottostante.
Supponiamo che per ricavare un certo dato abbiamo bisogno di effettuare un'elaborazione complessa e di coinvolgere diversi oggetti con i relativi metodi o funzioni globali.
Nel nostro esempio creeremo forzatamente delle funzioni evitando di utilizzare un'unica espressione matematica per calcolare il risultato di una proporzione
"2 sta a 4 come 3 sta a X"
function dividi(x,y){ return x/y; } function moltiplica(z,n){ return n*z; }
Per ottenere il risultato dell'incognita "X" saremo costretti ad effettuare le seguenti operazioni:
var risultatoMoltiplicazione = moltiplica(4,3); var risultatoProporzione = dividi(riultatoMoltiplicazione, 2);
Adottando il Pattern Façade costruiremo una funzione che tramite una semplice invocazione si occupa di svolgere la parte complessa coordinando le funzioni coinvolte:
var calcoloProporzione = function(q,w,e){ var risultatoMoltiplicazione = moltiplica(w,e); return dividi(risultatoMoltiplicazione, q); }
Con la funzione "calcoloProporzione" che contiene/incorpora le altre due funzioni "moltiplica" e "dividi", saremo in grado di calcolare, invocando un'unica funzione molteplici calcoli di proporzioni.
calcoloProporzione(2,4,3); // 6
Abbiamo creato un'interfaccia di alto livello per il calcolo di proporzioni.