UML
Il design pattern Façade
Il design pattern Façade è un pattern di progettazione che offre un’interfaccia semplificata per una struttura di classe complessa con l’obiettivo di nasconderne l’implementazione.
Ecco i punti che contraddistinguono questo pattern:
-
Semplificazione dell’interfaccia: Il pattern Façade fornisce un’interfaccia più semplice e unificata per un insieme di classi o strutture di classi che interagiscono l’un l’altra, nascondendo la complessità del sottosistema sottostante.
-
Riduzione della complessità: La façade semplifica l’utilizzo del sottosistema complesso, rende il codice più leggibile e mantenibile.
-
Intermediario tra l’utente e il sottosistema: La façade funge da intermediario tra l’utente e il sottosistema che si vuole semplificare, indirizzando le richieste dell’utente al sottosistema appropriato e gestendo le interazioni tra le diverse classi o componenti del sottosistema.
-
Single Responsibility Principle (SRP): Il pattern Façade segue il principio SRP, ovvero ogni classe o componente del sistema ha una sola responsabilità specifica, rendendo il sistema più modularizzato e facile da modificare o estendere.
-
Miglioramento dell’estendibilità: Il pattern Façade rende il sistema più facile da estendere, poiché le modifiche al sottosistema possono essere fatte senza influire sulla façade o sui client che utilizzano la façade.
Il pattern Façade segue i principi SOLID:
-
Implementa naturalmente il Single Responsibility Principle, che stabilisce che ogni pattern deve avere una singola responsabilità specifica all’interno del sistema.
-
Fornisce una interfaccia semplice di comunicazione con il sistema per un insieme di classi e questa interfaccia ha una singola responsabilità specifica.
-
Migliora la possibilità di estendere le funzionalità del sistema seguendo l’Open/Closed Principle, secondo il quale una classe deve essere aperta a l’estensione ma non alla modifica.
-
Dato che è una interfaccia per un sottosistema, le modifiche possono essere introdotte senza influire sulla Façade o su tutte le classi che la implementano.