# Façade

Le patron de la façade permet d'avoir un accès simplifié à un ensemble
complexe de classes.

[![2023-10-03_22-23-13_screenshot.png](https://books.snowcode.ovh/uploads/images/gallery/2023-10/scaled-1680-/2023-10-03-22-23-13-screenshot.png)](https://books.snowcode.ovh/uploads/images/gallery/2023-10/2023-10-03-22-23-13-screenshot.png)

Voici à quoi ressemble le patron de la façade :

[![2023-10-03_22-24-05_screenshot.png](https://books.snowcode.ovh/uploads/images/gallery/2023-10/scaled-1680-/2023-10-03-22-24-05-screenshot.png)](https://books.snowcode.ovh/uploads/images/gallery/2023-10/2023-10-03-22-24-05-screenshot.png)

Le fonctoinnement de la facade est que l'on crée une classe facade qui
collabore avec les éléments du système pour fournir une interface simple
au client. Cependant si la facade devient elle même trop imposante, on
peut utiliser faire communiquer une façade avec une autre façade.

Les façades permettent ainsi d'éviter les God objects et les God
functions (les objets ou fonctions qui font trop de choses et
connaissent trop de classes).

## Cohésion et couplage

[![2023-10-03_22-42-34_screenshot.png](https://books.snowcode.ovh/uploads/images/gallery/2023-10/scaled-1680-/2023-10-03-22-42-34-screenshot.png)](https://books.snowcode.ovh/uploads/images/gallery/2023-10/2023-10-03-22-42-34-screenshot.png)

Le patron de la façade a également l'avantage d'augmenter la cohésion,
c'est à dire d'augmenter le degré d'interconnexion des membres du
système du quel la facade fait partie. Une cohésion forte indique que le
type représente un concept clair et réutilisable.

Cependant si le couplage est trop élevé, on arrive dans un God Object
(précisément ce que l'on souhaite éviter), c'est pour cela qu'il vaut
mieux créer plusieurs façades si une façade devient un peu trop
omnisciente.