title: Façade (patron de conception)
text: # Façade (patron de conception)
  
  En génie logiciel, le patron de conception (ou design pattern) façade a pour but de cacher une conception et une interface complexe difficile à comprendre (cette complexité étant apparue « naturellement » avec l'évolution du sous-système en question).
  
  ## Objectif
  
  La façade permet de simplifier cette complexité en fournissant une interface simple du sous-système. Habituellement, la façade est réalisée en réduisant les fonctionnalités de ce dernier, mais en fournissant toutes les fonctions nécessaires à la plupart des utilisateurs.
  
  La façade encapsule la complexité des interactions entre les objets métier participant à un workflow.
  
  Une façade peut être utilisée pour :
  
  * rendre une bibliothèque plus facile à utiliser, comprendre et tester;
  * rendre une bibliothèque plus lisible;
  * réduire les dépendances entre les clients de la bibliothèque et le fonctionnement interne de celle-ci, ainsi on gagne en flexibilité pour les évolutions futures du système;
  * assainir une API que l'on ne peut pas modifier si celle-ci est mal conçue, ou mieux découper ses fonctionnalités si celle-ci n'est pas assez claire.
  
  Un adaptateur est utilisé lorsque l'on doit respecter une interface bien définie. La façade est utilisée pour simplifier l'utilisation de l'API.
  
  ## Structure
  
  ### Façade
  
      La façade fait abstraction des packages 1, 2 et 3 du reste de l'application.
  
  ### Clients
  
      Les objets utilisant le patron de conception Façade pour accéder aux ressources abstraites.
  
  ## Exemple
  
  ### Java
  
  L'exemple suivant cache une API de gestion de calendrier compliquée, derrière une façade plus simple. Il affiche :
  
  