SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
UNIVERSITE D’ABOMEY-CALAVI
Institut des Mathematiques et des Sciences Physiques.
Design pattern
Bridge Pattern
Architecture Logicielle II
Présentateur:
Khalfan MBAZUMUTIMA
Enseignant:
CHARLY AGBOTON.
February 20, 2019
1
Content
Définition
Définition
Intention
Problématique
Solutions
Constituants
Approche conventionnelle
Approche Bridge Pattern
Conséquence et Conclusion
Conséquence
Conclusion
@khalfan | Bridge Pattern
2
Définition
Intention
Définition
Bridge Pattern (Pont) est un patron de conception qui permet de découpler
l’interface d’une classe et son implémentation,
IL appartient à la famille de Structural patterns.
Intention
Découpler une abstraction de son implémentation afin que les 2 éléments
puissent être modifiés indépendamment l’un de l’autre
@khalfan | Bridge Pattern
3
Problématique
Problématique
Quand une abstraction peut avoir toute une série d’implémentations possibles,
le moyen usuel pour les fédérer est d’utiliser l’héritage :
une classe abstraite définit l’interface de l’abstraction
les sous-classes concrètes l’implémentent de différentes façons.
Cette approche n’est pas suffisamment souple :
l’héritage lie l’implémentation de façon permanente
ce qui rend difficile la modification, l’extension, la réutilisation des abstractions et
des implémentations indépendamment l’une de l’autre.
Ce couplage conduit à une explosion du nombre de classes.
@khalfan | Bridge Pattern
4
Solutions
Solutions
Il faut donc découpler les abstractions des implémentations.
Le patron Pont traite ces problèmes en séparant l’abstraction et son
implémentation.
Définir une interface pour toutes les implémentations voulues et les faire
utiliser par les dérivations de la classe abstraite.
@khalfan | Bridge Pattern
5
Constituants
Constituants
Abstraction: définit l’interface de l’abstraction ; gère une référence à un objet
de type Implementor.
Implementor: définit l’interface des classes d’implémentation. En général, elle
définit des opérations primitives.
bridge: lien d’association qui fait le pont entre l’abstraction et
l’implémentation.
Utilisation
Utiliser Bridge pattern lorsque:
on veut une liaison d’exécution de l’implémentation,
on veut partager une implémentation entre plusieurs objets,
@khalfan | Bridge Pattern
6
Approche conventionnelle
Approche conventionnelle
Shape interface
Rectangle
red green
Square
red green
circle
red green
@khalfan | Bridge Pattern
7
Diagramme des classes
Diagramme de classe
@khalfan | Bridge Pattern
8
Approche Bridge Design
Approche Bridge Design
Shape interface color interface
Bridge class
Rectangle Squarecircle
red green
@khalfan | Bridge Pattern
9
Diagramme des classes
Diagramme des classes
@khalfan | Bridge Pattern
10
Coding
1 package bridge;
2
3 public abstract class Forme {
4
5 protected Color color;
6
7 public Forme(Color color) {
8 this.color = color;
9
10 }
11
12 public void fillColor () {
13
14 }
15
16 }
Forme.java
@khalfan | Bridge Pattern
11
Coding
1 package bridge;
2
3 public class Cercle extends Forme {
4
5 public Cercle(Color color) {
6 super(color);
7 }
8
9 @Override
10 public void fillColor () {
11 System.out.print("Cercle de couleur");
12 color.fillColor ();
13 }
14
15 }
Cercle.java
@khalfan | Bridge Pattern
12
Coding
1 package bridge;
2
3 public class Carre extends Forme {
4 public Carre(Color color) {
5 super(color);
6 }
7
8 @Override
9 public void fillColor () {
10 System.out.print("Carré de couleur ");
11 color.fillColor ();
12 }
13
14 }
Carre.java
@khalfan | Bridge Pattern
13
Coding
1 package bridge;
2
3 public interface Color {
4
5 void fillColor ();
6 }
Color.java
@khalfan | Bridge Pattern
14
Coding
1 package bridge;
2
3 public class Vert implements Color {
4
5 public void fillColor () {
6
7 System.out.println("Vert");
8 }
9
10 }
Vert.java
@khalfan | Bridge Pattern
15
Coding
1 package bridge;
2
3 public class Blue implements Color {
4
5 public void fillColor () {
6
7 System.out.println("Bleu");
8 }
9
10 }
Blue.java
@khalfan | Bridge Pattern
16
Coding
1 package bridge;
2
3 public class TestBridge {
4
5 public static void main(String [] args) {
6 Forme carre = new Carre(new Blue());
7 carre.fillColor ();
8
9 // Forme cercle = new Cercle(new Blue());
10 // cercle.fillColor ();
11
12 Forme cercle = new Cercle(new Vert());
13 cercle.fillColor ();
14
15 }
16
17 }
TestBridge.java@khalfan | Bridge Pattern
17
Conséquence et Conclusion
Conséquence
Le découplage des implémentations à partir des objets les utilisant accroît les
possibilités d’extension.
Les clients ignorent les problèmes d’implémentation.
Conclusion
À la création de l’abstraction, il faut lier l’instance à une instance de
l’implémentation.
L’abstraction transmet les requêtes client à l’objet implémentation qui lui est
lié.
@khalfan | Bridge Pattern
Thank you !

Contenu connexe

Tendances

Angular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTtayebbousfiha1
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...ENSET, Université Hassan II Casablanca
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuéesFranck SIMON
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdfAchrafAntri2
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...Sid Ahmed Benkraoua
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 

Tendances (20)

Le langage sql
Le langage sqlLe langage sql
Le langage sql
 
Angular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHT
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Cours 1 introduction
Cours 1 introductionCours 1 introduction
Cours 1 introduction
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuées
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdf
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
React-cours.pdf
React-cours.pdfReact-cours.pdf
React-cours.pdf
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 

Design pattern bridgepatern

  • 1. UNIVERSITE D’ABOMEY-CALAVI Institut des Mathematiques et des Sciences Physiques. Design pattern Bridge Pattern Architecture Logicielle II Présentateur: Khalfan MBAZUMUTIMA Enseignant: CHARLY AGBOTON. February 20, 2019
  • 2. 1 Content Définition Définition Intention Problématique Solutions Constituants Approche conventionnelle Approche Bridge Pattern Conséquence et Conclusion Conséquence Conclusion @khalfan | Bridge Pattern
  • 3. 2 Définition Intention Définition Bridge Pattern (Pont) est un patron de conception qui permet de découpler l’interface d’une classe et son implémentation, IL appartient à la famille de Structural patterns. Intention Découpler une abstraction de son implémentation afin que les 2 éléments puissent être modifiés indépendamment l’un de l’autre @khalfan | Bridge Pattern
  • 4. 3 Problématique Problématique Quand une abstraction peut avoir toute une série d’implémentations possibles, le moyen usuel pour les fédérer est d’utiliser l’héritage : une classe abstraite définit l’interface de l’abstraction les sous-classes concrètes l’implémentent de différentes façons. Cette approche n’est pas suffisamment souple : l’héritage lie l’implémentation de façon permanente ce qui rend difficile la modification, l’extension, la réutilisation des abstractions et des implémentations indépendamment l’une de l’autre. Ce couplage conduit à une explosion du nombre de classes. @khalfan | Bridge Pattern
  • 5. 4 Solutions Solutions Il faut donc découpler les abstractions des implémentations. Le patron Pont traite ces problèmes en séparant l’abstraction et son implémentation. Définir une interface pour toutes les implémentations voulues et les faire utiliser par les dérivations de la classe abstraite. @khalfan | Bridge Pattern
  • 6. 5 Constituants Constituants Abstraction: définit l’interface de l’abstraction ; gère une référence à un objet de type Implementor. Implementor: définit l’interface des classes d’implémentation. En général, elle définit des opérations primitives. bridge: lien d’association qui fait le pont entre l’abstraction et l’implémentation. Utilisation Utiliser Bridge pattern lorsque: on veut une liaison d’exécution de l’implémentation, on veut partager une implémentation entre plusieurs objets, @khalfan | Bridge Pattern
  • 7. 6 Approche conventionnelle Approche conventionnelle Shape interface Rectangle red green Square red green circle red green @khalfan | Bridge Pattern
  • 8. 7 Diagramme des classes Diagramme de classe @khalfan | Bridge Pattern
  • 9. 8 Approche Bridge Design Approche Bridge Design Shape interface color interface Bridge class Rectangle Squarecircle red green @khalfan | Bridge Pattern
  • 10. 9 Diagramme des classes Diagramme des classes @khalfan | Bridge Pattern
  • 11. 10 Coding 1 package bridge; 2 3 public abstract class Forme { 4 5 protected Color color; 6 7 public Forme(Color color) { 8 this.color = color; 9 10 } 11 12 public void fillColor () { 13 14 } 15 16 } Forme.java @khalfan | Bridge Pattern
  • 12. 11 Coding 1 package bridge; 2 3 public class Cercle extends Forme { 4 5 public Cercle(Color color) { 6 super(color); 7 } 8 9 @Override 10 public void fillColor () { 11 System.out.print("Cercle de couleur"); 12 color.fillColor (); 13 } 14 15 } Cercle.java @khalfan | Bridge Pattern
  • 13. 12 Coding 1 package bridge; 2 3 public class Carre extends Forme { 4 public Carre(Color color) { 5 super(color); 6 } 7 8 @Override 9 public void fillColor () { 10 System.out.print("Carré de couleur "); 11 color.fillColor (); 12 } 13 14 } Carre.java @khalfan | Bridge Pattern
  • 14. 13 Coding 1 package bridge; 2 3 public interface Color { 4 5 void fillColor (); 6 } Color.java @khalfan | Bridge Pattern
  • 15. 14 Coding 1 package bridge; 2 3 public class Vert implements Color { 4 5 public void fillColor () { 6 7 System.out.println("Vert"); 8 } 9 10 } Vert.java @khalfan | Bridge Pattern
  • 16. 15 Coding 1 package bridge; 2 3 public class Blue implements Color { 4 5 public void fillColor () { 6 7 System.out.println("Bleu"); 8 } 9 10 } Blue.java @khalfan | Bridge Pattern
  • 17. 16 Coding 1 package bridge; 2 3 public class TestBridge { 4 5 public static void main(String [] args) { 6 Forme carre = new Carre(new Blue()); 7 carre.fillColor (); 8 9 // Forme cercle = new Cercle(new Blue()); 10 // cercle.fillColor (); 11 12 Forme cercle = new Cercle(new Vert()); 13 cercle.fillColor (); 14 15 } 16 17 } TestBridge.java@khalfan | Bridge Pattern
  • 18. 17 Conséquence et Conclusion Conséquence Le découplage des implémentations à partir des objets les utilisant accroît les possibilités d’extension. Les clients ignorent les problèmes d’implémentation. Conclusion À la création de l’abstraction, il faut lier l’instance à une instance de l’implémentation. L’abstraction transmet les requêtes client à l’objet implémentation qui lui est lié. @khalfan | Bridge Pattern