Intention

  • Fournir une interface unifiée à un ensemble d’interfaces dans un sous-système.Facade définit une interface de niveau supérieur qui rend le sous-système plus facile à utiliser.
  • Envelopper un sous-système compliqué avec une interface plus simple.

Problème

Un segment de la communauté des clients a besoin d’une interface simplifiée pour la fonctionnalité globale d’un sous-système complexe.

Discussion

Facade discute de l’encapsulation d’un sous-système complexe dans un objet à interface unique. Cela réduit la courbe d’apprentissage nécessaire pour exploiter avec succès le sous-système. Cela favorise également le découplage du sous-système de ses clients potentiellement nombreux. D’un autre côté, si la façade est le seul point d’accès au sous-système, elle limitera les fonctionnalités et la flexibilité dont les « power users » peuvent avoir besoin.

L’objet façade doit être un défenseur ou un facilitateur assez simple. Il ne doit pas devenir un oracle omniscient ou un objet « dieu ».

Structure

Facade prend une « énigme enveloppée dans une énigme enveloppée dans le mystère »,et interjecte une enveloppe qui dompte la masse amorphe et impénétrable du logiciel.

SubsystemOne et SubsystemThree n’interagissent pas avec les composants internes de SubsystemTwo.Ils utilisent la « façade » SubsystemTwoWrapper (c’est-à-dire l’abstraction de plus haut niveau).

Exemple

La façade définit une interface unifiée de plus haut niveau pour un sous-système qui le rend plus facile à utiliser. Les consommateurs rencontrent une façade lorsqu’ils passent une commande dans un catalogue. Le consommateur appelle un numéro et parle avec un représentant du service clientèle. Le représentant du service client agit comme une façade, fournissant une interface au département d’exécution des commandes, au département de facturation et au département d’expédition.

Liste de contrôle

  1. Identifier une interface plus simple et unifiée pour le sous-système ou le composant.
  2. Concevoir une classe  » enveloppe  » qui encapsule le sous-système.
  3. La façade/enveloppe capture la complexité et les collaborations du composant, et délègue aux méthodes appropriées.
  4. Le client utilise (est couplé à) la façade uniquement.
  5. Considérez si des façades supplémentaires ajouteraient de la valeur.

Règles de base

  • La façade définit une nouvelle interface, tandis que l’adaptateur utilise une ancienne interface.Rappelez-vous que l’adaptateur fait fonctionner ensemble deux interfaces existantes par opposition à la définition d’une interface entièrement nouvelle.
  • Alors que Flyweight montre comment faire beaucoup de petits objets, Facade montre comment faire en sorte qu’un seul objet représente un sous-système entier.
  • Mediator est similaire à Facade en ce qu’il abstrait la fonctionnalité des classes existantes. Mediator abstrait/centralise les communications arbitraires entre objets collègues. Il apporte régulièrement une « valeur ajoutée » et il est connu/référencé par les objets collègues. En revanche, Facade définit une interface plus simple à un sous-système, il n’ajoute pas de nouvelle fonctionnalité, et il n’est pas connu par les classes du sous-système.
  • Abstract Factory peut être utilisé comme une alternative à Facade pour cacher des classes spécifiques à la plateforme.
  • Les objets Facade sont souvent des Singletons parce qu’un seul objet Facade estrequired.
  • Adapter et Facade sont tous deux des wrappers ; mais ce sont des types de wrappers différents. L’intention de Facade est de produire une interface plus simple, et l’intention de Adapter est de concevoir à une interface existante.Alors que Facade enveloppe couramment plusieurs objets et Adapter enveloppe un seul objet ; Facade pourrait front-end un seul objet complexe etAdapter pourrait envelopper plusieurs objets hérités.

Question : Donc, la façon de faire la différence entre le patronAdapter et le patron Facade est que l’Adaptateur enveloppe une classe et que le Facade peut représenter plusieurs classes ?

Réponse : Non ! Rappelez-vous, le pattern Adapter change l’interface d’une ou plusieurs classes en une seule interface qu’un client attend. Alors que la plupart des exemples de manuels montrent l’adaptateuradaptant une classe, vous pouvez avoir besoin d’adapter de nombreuses classes pour fournir l’interface à laquelle un client est codé. De même, une façade peut fournir une interface simplifiée à une classe unique dotée d’une interface très complexe. La différence entre les deux n’est pas interms de combien de classes ils « enveloppent », c’est dans leur intention.

Supportons notre site web gratuit et possédons l’eBook !

  • 22 design patterns et 8 principes expliqués en profondeur
  • 406 pages bien structurées, faciles à lire, sans jargon
  • 228 illustrations et diagrammes clairs et utiles
  • Une archive avec des exemples de code en 4 langues
  • Tous les appareils sont pris en charge : Formats EPUB/MOBI/PDF

En savoir plus…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.