SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
DDeessiiggnn PPaatttteerrnnss 
PPaarrtt 55 
Mohamed Youssfi 
Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA) 
ENSET, Université Hassan II Casablanca, Maroc 
Email : med@youssfi.net 
Supports de cours : http://fr.slideshare.net/mohamedyoussfi9 
Chaîne vidéo : http://youtube.com/mohamedYoussfi 
Recherche : http://www.researchgate.net/profile/Youssfi_Mohamed/publications 
med@youssfi.net
PPaatttteerrnn AAddaapptteerr
PPaatttteerrnn AAddaapptteerr 
 Catégorie : 
◦ Structure 
 Objectif du pattern 
◦ Convertir l'interface d'une classe dans une autre interface 
ccoommpprriissee ppaarr llaa ppaarrttiiee cclliieennttee.. 
◦ Permettre à des classes de fonctionner ensemble, ce qui 
n'aurait pas été possible à cause de leurs interfaces 
incompatibles. 
 Résultat : 
◦ Le Design Pattern permet d'isoler l'adaptation 
d'un sous-système. 
med@youssfi.net
DDiiaaggrraammmmee ddee ccllaasssseess 
Pattern Adapter par héritage 
Pattern Adapter par Composition 
med@youssfi.net
RRaaiissoonn dd’’uuttiilliissaattiioonn 
 Le système doit intégrer un sous-système existant. 
 Ce sous-système a une interface non standard par 
rapport au système. 
 Cela peut être le cas d'un driver bas niveau pour de 
l'informatique embarquée. 
 Le driver fournit par le fabricant ne correspond pas à 
l'interface utilisée par le système pour d'autres drivers. 
 La solution est de masquer cette interface non stantard 
au système et de lui présenter une interface standard. 
 La partie cliente utilise les méthodes de l'Adaptateur qui 
utilise les méthodes du sous-système pour réaliser les 
opérations correspondantes. 
med@youssfi.net
RReessppoonnssaabbiilliittééss 
 Standard : définit une interface qui est identifiée comme standard 
dans la partie cliente. 
 ImplStandard : implémente l'interface Standard. Cette classe n'a pas 
besoin d'être adaptée. 
 ImplAdaptee : permet de réaliser les fonctionnalités définies dans 
l'interface Standard, mais ne la respecte pas. Cette classe a besoin 
dd''êêttrree aaddaappttééee.. 
 Adaptateur : adapte l'implémentation ImplAdaptee à l'interface 
Standard. Pour réaliser l'adaptation, l'Adaptateur peut utiliser une ou 
plusieurs méthodes différentes de l'implémentation ImplAdaptee pour 
réaliser l'implémentation de chaque méthode de l'interface Standard. 
 La partie cliente : manipule des objets Standard. donc, l'adaptation 
est transparente pour la partie cliente. 
med@youssfi.net
IImmpplléémmeennttaattiioonn 
/* Standard.java */ 
public interface Standard { 
public void operation(int nb1,int nb2); 
} 
/* ImplStandard.java */ 
public class ImplStandard implements Standard { 
@Override 
public void operation(int nb1, int nb2) { 
System.out.println(Standard, Résultat est :+nb1*nb2); 
med@youssfi.net 
} 
} 
/* ImplStandard.java */ 
public class ImplAdaptee { 
public int operation2(int nb1,int nb2){ 
return nb1*nb2; 
} 
public void operation3(int nb){ 
System.out.println(Adaptée, Résultat=+nb); 
} 
}
IImmpplléémmeennttaattiioonn 
public class AdaptateurHeritage extends ImplAdaptee implements Standard { 
@Override 
public void operation(int nb1, int nb2) { 
int nb=operation2(nb1, nb2); 
operation3(nb); 
} 
} 
/* AdaptateurHeritage.java */ 
public class AdaptateurComposition implements Standard { 
private ImplAdaptee adaptee=new ImplAdaptee(); 
@Override 
public void operation(int nb1, int nb2) { 
med@youssfi.net 
int nb=adaptee.operation2(nb1, nb2); 
adaptee.operation3(nb); 
} 
} 
/* AdaptateurComposition.java */
IImmpplléémmeennttaattiioonn 
/* Application.java */ 
public class Application { 
public static void main(String[] args) { 
Standard standard=new ImplStandard(); 
standard.operation(7, 9); 
Standard adaptee1=new AdaptateurHeritage(); 
adaptee1.operation(7, 9); 
Standard adaptee2=new AdaptateurComposition(); 
adaptee2.operation(7, 9); 
} 
} 
med@youssfi.net 
Standard, Résultat est :63 
Adaptée, Résultat=63 
Adaptée, Résultat=63

Weitere ähnliche Inhalte

Was ist angesagt?

Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...ENSET, Université Hassan II Casablanca
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 

Was ist angesagt? (20)

Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
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)
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 

Andere mochten auch

Andere mochten auch (6)

Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 

Ähnlich wie Cours design pattern m youssfi partie 5 adapter

4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_threadSaber LAJILI
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
DEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxDEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxTasnimBenAmmar
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdfJunior724645
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Anne-Marie Pinna-Dery
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyXavier Gorse
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns JavaVINOT Bernard
 
Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratiqueFrederic Hardy
 
Architecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de DrupalArchitecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de DrupalThomas Delerm
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 

Ähnlich wie Cours design pattern m youssfi partie 5 adapter (20)

Cours spring
Cours springCours spring
Cours spring
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Abstract factory+adapter
Abstract factory+adapterAbstract factory+adapter
Abstract factory+adapter
 
DEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxDEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptx
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Serveur node red
Serveur node redServeur node red
Serveur node red
 
SQL_Python.pdf
SQL_Python.pdfSQL_Python.pdf
SQL_Python.pdf
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3
 
Utiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec SymfonyUtiliser le Zend Framework avec Symfony
Utiliser le Zend Framework avec Symfony
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
Intro ihm
Intro ihmIntro ihm
Intro ihm
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratique
 
Architecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de DrupalArchitecture PHP 3 tier avec Zend en backend de Drupal
Architecture PHP 3 tier avec Zend en backend de Drupal
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 

Mehr von ENSET, Université Hassan II Casablanca

Mehr von ENSET, Université Hassan II Casablanca (7)

Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFITheses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Support distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcastSupport distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcast
 
Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 

Cours design pattern m youssfi partie 5 adapter

  • 1. DDeessiiggnn PPaatttteerrnnss PPaarrtt 55 Mohamed Youssfi Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA) ENSET, Université Hassan II Casablanca, Maroc Email : med@youssfi.net Supports de cours : http://fr.slideshare.net/mohamedyoussfi9 Chaîne vidéo : http://youtube.com/mohamedYoussfi Recherche : http://www.researchgate.net/profile/Youssfi_Mohamed/publications med@youssfi.net
  • 3. PPaatttteerrnn AAddaapptteerr Catégorie : ◦ Structure Objectif du pattern ◦ Convertir l'interface d'une classe dans une autre interface ccoommpprriissee ppaarr llaa ppaarrttiiee cclliieennttee.. ◦ Permettre à des classes de fonctionner ensemble, ce qui n'aurait pas été possible à cause de leurs interfaces incompatibles. Résultat : ◦ Le Design Pattern permet d'isoler l'adaptation d'un sous-système. med@youssfi.net
  • 4. DDiiaaggrraammmmee ddee ccllaasssseess Pattern Adapter par héritage Pattern Adapter par Composition med@youssfi.net
  • 5. RRaaiissoonn dd’’uuttiilliissaattiioonn Le système doit intégrer un sous-système existant. Ce sous-système a une interface non standard par rapport au système. Cela peut être le cas d'un driver bas niveau pour de l'informatique embarquée. Le driver fournit par le fabricant ne correspond pas à l'interface utilisée par le système pour d'autres drivers. La solution est de masquer cette interface non stantard au système et de lui présenter une interface standard. La partie cliente utilise les méthodes de l'Adaptateur qui utilise les méthodes du sous-système pour réaliser les opérations correspondantes. med@youssfi.net
  • 6. RReessppoonnssaabbiilliittééss Standard : définit une interface qui est identifiée comme standard dans la partie cliente. ImplStandard : implémente l'interface Standard. Cette classe n'a pas besoin d'être adaptée. ImplAdaptee : permet de réaliser les fonctionnalités définies dans l'interface Standard, mais ne la respecte pas. Cette classe a besoin dd''êêttrree aaddaappttééee.. Adaptateur : adapte l'implémentation ImplAdaptee à l'interface Standard. Pour réaliser l'adaptation, l'Adaptateur peut utiliser une ou plusieurs méthodes différentes de l'implémentation ImplAdaptee pour réaliser l'implémentation de chaque méthode de l'interface Standard. La partie cliente : manipule des objets Standard. donc, l'adaptation est transparente pour la partie cliente. med@youssfi.net
  • 7. IImmpplléémmeennttaattiioonn /* Standard.java */ public interface Standard { public void operation(int nb1,int nb2); } /* ImplStandard.java */ public class ImplStandard implements Standard { @Override public void operation(int nb1, int nb2) { System.out.println(Standard, Résultat est :+nb1*nb2); med@youssfi.net } } /* ImplStandard.java */ public class ImplAdaptee { public int operation2(int nb1,int nb2){ return nb1*nb2; } public void operation3(int nb){ System.out.println(Adaptée, Résultat=+nb); } }
  • 8. IImmpplléémmeennttaattiioonn public class AdaptateurHeritage extends ImplAdaptee implements Standard { @Override public void operation(int nb1, int nb2) { int nb=operation2(nb1, nb2); operation3(nb); } } /* AdaptateurHeritage.java */ public class AdaptateurComposition implements Standard { private ImplAdaptee adaptee=new ImplAdaptee(); @Override public void operation(int nb1, int nb2) { med@youssfi.net int nb=adaptee.operation2(nb1, nb2); adaptee.operation3(nb); } } /* AdaptateurComposition.java */
  • 9. IImmpplléémmeennttaattiioonn /* Application.java */ public class Application { public static void main(String[] args) { Standard standard=new ImplStandard(); standard.operation(7, 9); Standard adaptee1=new AdaptateurHeritage(); adaptee1.operation(7, 9); Standard adaptee2=new AdaptateurComposition(); adaptee2.operation(7, 9); } } med@youssfi.net Standard, Résultat est :63 Adaptée, Résultat=63 Adaptée, Résultat=63