Design Pattern in Java: Facade

Continua il nostro viaggio sui Design Pattern in Java. Oggi vedremo come funziona il pattern Facade.

Il pattern Facade (facciata in inglese) è abbastanza semplice ed intuitivo e viene utilizzato per riassumere le funzionalità di diversi oggetti in uno solo. Nello sviluppo di un programma avremo diverse volte svariate classi che implementano metodi necessari per diverse funzioni di business. Una singola funzione di business può racchiudere diversi metodi che noi abbiamo implementato in svariate classi.

Il pattern Facade (o Façade) viene utilizzato quando inseriamo nel nostro diagramma delle classi una classe che espone un singolo metodo, che a sua volta richiamerà i metodi delle classi interne. In questo modo quando un’altra classe deve svolgere un metodo di business che abbiamo già implementato si deve ridurre semplicemente a richiamare un solo metodo della classe che fa da Facade (facciata appunto). Un altro motivo può essere quello di mascherare la complessità un’operazione al chiamante, in modo tale che i dettagli vengano conosciuti soltanto da chi espone una determinata funzionalità.

Nella seguente immagine trovate la differenza tra l’utilizzo del pattern Facade e il classico sviluppo con metodi distribuiti su diverse classi

Facade

L’utilizzo di una class Facade può essere comparato ad un Webservice. Quando esponiamo un Webservice non diamo informazioni su come poi il metodo di business viene implementato, ma lasciamo visibile solo l’handler della funzione che può essere richiamata.

Lo sviluppo di diverse business component può essere fatto in maniera molto più organizzata utilizzando questo pattern. Vediamo quindi un esempio di codice riguardante questo pattern. Per prima cosa vediamo i 3 oggetti che implementano
le diverse funzionalità.

Vediamo ora la classe Facade che richiama queste tre classi per implementare ed esporre il metodo getInfo()

Una classe che deve utilizzare la nostra classe Facade deve soltanto richiamare un metodo per avere sotto controllo l’intero business task, senza preoccuparsi di diverse classi e diversi metodi. Lo stesso discorso che abbiamo fatto con le classi può essere fatto con le interfacce. In questo caso possiamo riunire diverse interfacce piccole sotto un’unica interfaccia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *