Façade (patron de conception)

Cet article ne cite pas suffisamment ses sources
(octobre 2014).

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références » (modifier l'article, comment ajouter mes sources ?).

Cet article ou cette section peut contenir un travail inédit ou des déclarations non vérifiées
(indiquez la date de pose grâce au paramètre date).

Vous pouvez aider en ajoutant des références. Voir la page de discussion pour plus de détails.

image illustrant l’informatique
Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Page d'aide sur l'homonymie Pour les articles homonymes, voir Façade (homonymie).

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 :

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 :

Date: 1980-08-20
20 jours après : 1980-09-09
 import java.util.*;
 
 // Façade 
 class UserfriendlyDate {
     GregorianCalendar gcal;
      
     public UserfriendlyDate(String isodate_ymd) {
         String[] a = isodate_ymd.split("-");
         gcal = new GregorianCalendar(Integer.parseInt(a[0]),
               Integer.parseInt(a[1])-1 /* !!! */, Integer.parseInt(a[2]));
     }

     public void addDays(int days) { 
       gcal.add(Calendar.DAY_OF_MONTH, days); 
     }
     
     public String toString() { 
       return String.format("%1$tY-%1$tm-%1$td", gcal);
     }
 }
 
 // Client 
 class FacadePattern {
     public static void main(String[] args) {  
         UserfriendlyDate d = new UserfriendlyDate("1980-08-20");   
         System.out.println("Date : "+d);   
         d.addDays(20);   
         System.out.println("20 jours après : "+d);
     }
 }


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.