Description:
Le but pattern Bridge est de séparer l'aspect d'implantation d'un objet de son aspect de représentation et d'interface.
Ainsi,d'une part l'implantation peut être totalement encapsulée et d'autre part l'implantation et la représentation peuvent évoluer indépendamment et sans que l'une exerce une contrainte sur l'autre.
Exemple:
Un Système devant créer deux implantations de classe différentes, mais avec des caractéristiques communes. Il est donc possible d'introduire une sous classe et deux sous-classes concrètes.
Dans un premier temps, les créations des classes concrètes seraient du premier type et dans un second temps de l'autre. Cette sous-classes introduite, doit également être abstraite et avoir également deux sous-classes concrètes pour chaque implantation.
But:
Le but pattern Bridge est de séparer l'aspect d'implantation d'un objet de son aspect de représentation et d'interface.
Solution:
La solution du pattern Bridge consiste donc à séparer les aspects de représentation de ceux d'implantation et à créer deux hiérarchies de classes comme illustré ci-dessous. Les instances de la classe ClassAbstraitPont détiennent le lien implatation vers une instance répondant à l'interface InterfaceImpl.
Avantages:
L'implantation peut être totalement encapsulée et d'autre part l'implantation et la représentation peuvent évoluer indépendamment
Diagramme de classes:
Le pattern Bridge en détails
- ClassAbstraitPont est la classe absraite qui représente les objets du domaine. Elle détient l'interface pour les clients et contient une référence vers un objet répondant à l'interface InterfaceImpl.
- ClassConcretDePontA, ClassConcretDePontB sont les classes concrètes qui implantent les méthodes de ClassAbstraitPont.
- InterfaceImpl définit l'interface des classes d'implantation. Les méthodes de cette interface ne doivent pas correspondre aux méthodes de ClassAbstraitPont. Les deux ensembles de méthodes sont différents. L'implantation introduit en général des méthodes de bas niveau et les méthodes de ClassAbstraitPont sont des méthodes de haut niveau.
- ClassImplA, ClassImplB sont des classes concrètes qui réalisent les méthodes introduites dans l'interface InterfaceImpl.
Collaborations:
Les opérations de ClassseAbstraitePont et de ses sous-classes invoquent les méthodes introduites dans l'interface InterfaceImpl.
Domaines d'utilisation:
- Pour éviter une liaison forte entre la représentation des objets et leur implantation, notamment quand l'implantation est sélectionnée au cours de l'exécution de l'application;
- Pour que les changements dans l'implantation des objets n'aient pas d'impact dans les interactions entre les objets et leurs clients.
- Pour Permettre à la représentation des objets et à leur implantation de conserver leur capacité d'extension par la création de nouvelles sous-classes ;
- Pour éviter d'obtenir des hiérarchies de classes extrêmement complexes.
Aucun commentaire:
Enregistrer un commentaire