SlideShare une entreprise Scribd logo
Centre Universitaire           De Souk-Ahras

                Institut : Sciences & Techniques
                     Département : Sciences

                    Design Pattern
             (Abstract Factory & Adapter)


                                             dériger:
Réalisé par :                           .Abdelkarim Amirate
                                        Dr
Heraguemi kamel eddine
Définition
  “Each pattern describes a problem which occurs over
   and over again in our environment, and then describes
   the core of the solution to that problem, in suh a way
   that you can use this solution a million times over,
   without ever doing it the same way twice”[Alexander,
   1977]
 Un patron de conception a 4 constituent :
• nom du patron: un mot/phrase que l’on utilise qui réfère une
famille de problèmes, une famille de solutions, et leur impact.
• problème: une description des problèmes typiques de conception
• solution: décrit les éléments constitutifs de la solution, leur
responsabilités, relations, et intéractions
• conséquences: impact et compromis résultant de l’application du
patron
                                                                    2
Types de patrons
   Créationnels:AbstractFactory,Singleton, Builder,…
 • Font l’abstracion du processus l’instanciasion afin de rendre un
système indépendant de la façon dont ses objets sont créés et
représentés;
   Structurels: Adapter, Bridge, Composite, Decorator,
    Façade,…
 • Se concentrent sur la façon dont les classes et les objets sont
composés pour obtenir de plus grandes structures

 Comportementaux: Iterator, Visitor, Observer, State,
    trategy, Mediator, …
• Décrivent les modèles de communicaton et interacton entre les
objets


                                                                      3
AbstractFactory   Adapter




                            4
Abstract Factory (1/7)
   Idée
    ◦ Fournir une interface pour créer des familles d’objets
      associés sans connaître leur classe réelle.
    ◦ La création d’objets regroupés en familles sans devoir
      connaître les classes concrètes destinées à la création
      de ces objets.
   Synonymes : Kit, Fabrique abstraite, Usine
    abstraite




                                                                5
Abstract Factory (2/7)
   Champs d’application
    ◦ Bibliothèque fournie avec seulement leurs interfaces,
      pas leurs implémentations
      (bibilothèque graphique, look-and-feel)
    ◦ Un système utilisant des produits a besoin d’être
      indépendant de la façon dont ces produits sont créés
      et regroupés ;
    ◦ Un système est paramétré par plusieurs familles de
      produits qui peuvent évoluer.




                                                              6
Abstract Factory (3/7)




                         7
Abstract Factory (4/7)
   Structure
    ◦ La fabrique
       AbstractFactory déclare l’interface pour les opérations qui
        créent des objets abstraits
       ConcreteFactory implémente les opérations qui crée les objets
        concrets
    ◦ Les objets (plusieurs types)
       AbstractProduct déclare une interface pour un type d’objet
       ConcreteProduct définit un objet qui doit être créé par la
        fabrique concrète correspondante et implémente l’interface
        AbstractProduct
    ◦ L’utilisateur
       Client utilise seulement les interfaces déclarée par
        AbstractFactory et par les classes AbstractProduct



                                                                        8
Abstract Factory (5/7)
   Collaborations
    ◦ Normalement, une seule instance de fabrique
      concrète est créée à l’exécution. Cette fabrique
      crée les objets avec une implémentation
      spécifique. Pour créer différents sortes
      d’objets, les clients doivent utiliser différentes
      fabriques concrètes.
    ◦ La fabrique abstraite défère la création des
      objets à ses sous-classes concrètes


                                                       9
Abstract Factory (6/7)
   Conséquences
    ◦ Isolation des classes concrètes (seules les
      classes abstraites/interface sont connues)
    ◦ Échange facile des familles de produit
    ◦ Encouragement de la cohérence entre les
      produits




                                                    10
Abstract Factory (7/7)
   Implémentation
    ◦ Les fabriques sont souvent des singletons
    ◦ Ce sont les sous-classes concrètes qui font la
      création, en utilisant le plus souvent une
      Factory Method
    ◦ Si plusieurs familles sont possibles, la
      fabrique concrète utilise Prototype




                                                       11
Patron de structure



Adapter (1/4)
   Idée
    ◦ Convertir l’interface d’une classe en une autre
      interface qui est attendue par un client.
    ◦ Permet de faire collaborer des classes qui n’auraient
      pas pu le faire à cause de l’incompatibilité de leurs
      interfaces
   Exemple
    ◦ Une classe de bibliothèque conçue pour la réutilisation
      ne peut pas l’être à cause d’une demande spécifique
      de l’application
    ◦ Les Adapter de java : MouseAdapter,
      WindowAdapter,etc.



                                                              12
Patron de structure



Adapter (2/4)
   Structure
    ◦ Une cible (Target) définit l’interface spécifique à
      l’application que le client utilise
    ◦ Le Client collabore avec les objets qui sont
      conformes à l’interface de Target
    ◦ La classe à adapter (Adaptee) est l’interface
      existante qui a besoin d’adaptation
    ◦ L’adaptateur (Adapter) adapte effectivement
      l’interface de Adaptee à l’interface de Target par
      traduction des accès (appels de méthode)


                                                            13
Adapter (2/4)




                14
Patron de structure



Adapter (3/4)
   Conséquences
    ◦ Pour la classe de l’objet qui adapte
      Pas possible d’adapter une classe et ses sous-classes
      Mais redéfinition possible du comportement (sous-
       classe)
    ◦ Pour l’objet qui adapte
      Un adapter peut travailler avec plusieurs Adaptees
      Plus difficile de redéfinir le comportement
       d’Adaptee (sous-classer puis obliger Adapter a
       référencer la sousclasse)



                                                               15
Patron de structure



Adapter (4/4)
   Implémentation
    ◦ Par héritage (multiple) de la classe à adapter,
      en y ajoutant les méthodes de l’interface cible
      et en assurant les appels corrects aux méthodes
      de la classe à adapter
    ◦ Par composition, selon le même principe (faire
      correspondre les appels de méthode) sauf que
      la classe à adapter est un champ de la classe
      qui adapte


                                                    16
   Exmple Crier en JAVA sur Eclipse




                                       17

Contenu connexe

Tendances

Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
Oussama BEN KHIROUN
 
Design Patterns (2003)
Design Patterns (2003)Design Patterns (2003)
Design Patterns (2003)
Pascal Roques
 
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
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
ENSET, Université Hassan II Casablanca
 
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
ENSET, Université Hassan II Casablanca
 
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
ENSET, Université Hassan II Casablanca
 
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
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
ENSET, Université Hassan II Casablanca
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
ENSET, Université Hassan II Casablanca
 
Patron observer
Patron observerPatron observer
Patron observer
Hibatallah Aouadni
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
ENSET, Université Hassan II Casablanca
 
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
ENSET, Université Hassan II Casablanca
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
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
ENSET, Université Hassan II Casablanca
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
maaroufi amine
 
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
ENSET, Université Hassan II Casablanca
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
ENSET, Université Hassan II Casablanca
 
Patrons de creation
Patrons de creationPatrons de creation
Patrons de creation
omri med
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
ENSET, Université Hassan II Casablanca
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 

Tendances (20)

Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Design Patterns (2003)
Design Patterns (2003)Design Patterns (2003)
Design Patterns (2003)
 
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...
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
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
 
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
 
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...
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Patron observer
Patron observerPatron observer
Patron observer
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
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
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
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
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
 
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
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Patrons de creation
Patrons de creationPatrons de creation
Patrons de creation
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 

Similaire à Abstract factory+adapter

Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof frIt Academy
 
OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015
Tarik Zakaria Benmerar
 
OOP and Design Patterns
OOP and Design PatternsOOP and Design Patterns
OOP and Design Patterns
Algiers Tech Meetup
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
andre543581
 
Cours spring
Cours springCours spring
Cours spring
mohamed el haddad
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptx
arapilatico
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
kadzaki
 
Tour d’horizon de scala
Tour d’horizon de scalaTour d’horizon de scala
Tour d’horizon de scalaBenoit Wilcox
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
Ines Ouaz
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
ATHMAN HAJ-HAMOU
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
cluelessjoe
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103MRamo2s
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
badrfathallah2
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
seydou4devops
 
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
Youness Boukouchi
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
Zineb ELGARRAI
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
Mehdi Mehni
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
JEAN-GUILLAUME DUJARDIN
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 

Similaire à Abstract factory+adapter (20)

Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
 
OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015
 
OOP and Design Patterns
OOP and Design PatternsOOP and Design Patterns
OOP and Design Patterns
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Cours spring
Cours springCours spring
Cours spring
 
575
575575
575
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptx
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Tour d’horizon de scala
Tour d’horizon de scalaTour d’horizon de scala
Tour d’horizon de scala
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
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
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 

Plus de Kamel Eddine Heragmi

Timing diagram
Timing diagramTiming diagram
Timing diagram
Kamel Eddine Heragmi
 

Plus de Kamel Eddine Heragmi (6)

Objecteering
ObjecteeringObjecteering
Objecteering
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
diagramme de cas d'utilisation
diagramme de cas d'utilisationdiagramme de cas d'utilisation
diagramme de cas d'utilisation
 
Timing diagram
Timing diagramTiming diagram
Timing diagram
 
7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation
 
Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)
 

Dernier

Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
BenotGeorges3
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
cristionobedi
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
Txaruka
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
Friends of African Village Libraries
 
Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
M2i Formation
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025
Billy DEYLORD
 

Dernier (8)

Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
 
Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
 
Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025
 

Abstract factory+adapter

  • 1. Centre Universitaire De Souk-Ahras Institut : Sciences & Techniques Département : Sciences Design Pattern (Abstract Factory & Adapter) dériger: Réalisé par :  .Abdelkarim Amirate Dr Heraguemi kamel eddine
  • 2. Définition  “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in suh a way that you can use this solution a million times over, without ever doing it the same way twice”[Alexander, 1977]  Un patron de conception a 4 constituent : • nom du patron: un mot/phrase que l’on utilise qui réfère une famille de problèmes, une famille de solutions, et leur impact. • problème: une description des problèmes typiques de conception • solution: décrit les éléments constitutifs de la solution, leur responsabilités, relations, et intéractions • conséquences: impact et compromis résultant de l’application du patron 2
  • 3. Types de patrons  Créationnels:AbstractFactory,Singleton, Builder,… • Font l’abstracion du processus l’instanciasion afin de rendre un système indépendant de la façon dont ses objets sont créés et représentés;  Structurels: Adapter, Bridge, Composite, Decorator, Façade,… • Se concentrent sur la façon dont les classes et les objets sont composés pour obtenir de plus grandes structures  Comportementaux: Iterator, Visitor, Observer, State, trategy, Mediator, … • Décrivent les modèles de communicaton et interacton entre les objets 3
  • 4. AbstractFactory Adapter 4
  • 5. Abstract Factory (1/7)  Idée ◦ Fournir une interface pour créer des familles d’objets associés sans connaître leur classe réelle. ◦ La création d’objets regroupés en familles sans devoir connaître les classes concrètes destinées à la création de ces objets.  Synonymes : Kit, Fabrique abstraite, Usine abstraite 5
  • 6. Abstract Factory (2/7)  Champs d’application ◦ Bibliothèque fournie avec seulement leurs interfaces, pas leurs implémentations (bibilothèque graphique, look-and-feel) ◦ Un système utilisant des produits a besoin d’être indépendant de la façon dont ces produits sont créés et regroupés ; ◦ Un système est paramétré par plusieurs familles de produits qui peuvent évoluer. 6
  • 8. Abstract Factory (4/7)  Structure ◦ La fabrique  AbstractFactory déclare l’interface pour les opérations qui créent des objets abstraits  ConcreteFactory implémente les opérations qui crée les objets concrets ◦ Les objets (plusieurs types)  AbstractProduct déclare une interface pour un type d’objet  ConcreteProduct définit un objet qui doit être créé par la fabrique concrète correspondante et implémente l’interface AbstractProduct ◦ L’utilisateur  Client utilise seulement les interfaces déclarée par AbstractFactory et par les classes AbstractProduct 8
  • 9. Abstract Factory (5/7)  Collaborations ◦ Normalement, une seule instance de fabrique concrète est créée à l’exécution. Cette fabrique crée les objets avec une implémentation spécifique. Pour créer différents sortes d’objets, les clients doivent utiliser différentes fabriques concrètes. ◦ La fabrique abstraite défère la création des objets à ses sous-classes concrètes 9
  • 10. Abstract Factory (6/7)  Conséquences ◦ Isolation des classes concrètes (seules les classes abstraites/interface sont connues) ◦ Échange facile des familles de produit ◦ Encouragement de la cohérence entre les produits 10
  • 11. Abstract Factory (7/7)  Implémentation ◦ Les fabriques sont souvent des singletons ◦ Ce sont les sous-classes concrètes qui font la création, en utilisant le plus souvent une Factory Method ◦ Si plusieurs familles sont possibles, la fabrique concrète utilise Prototype 11
  • 12. Patron de structure Adapter (1/4)  Idée ◦ Convertir l’interface d’une classe en une autre interface qui est attendue par un client. ◦ Permet de faire collaborer des classes qui n’auraient pas pu le faire à cause de l’incompatibilité de leurs interfaces  Exemple ◦ Une classe de bibliothèque conçue pour la réutilisation ne peut pas l’être à cause d’une demande spécifique de l’application ◦ Les Adapter de java : MouseAdapter, WindowAdapter,etc. 12
  • 13. Patron de structure Adapter (2/4)  Structure ◦ Une cible (Target) définit l’interface spécifique à l’application que le client utilise ◦ Le Client collabore avec les objets qui sont conformes à l’interface de Target ◦ La classe à adapter (Adaptee) est l’interface existante qui a besoin d’adaptation ◦ L’adaptateur (Adapter) adapte effectivement l’interface de Adaptee à l’interface de Target par traduction des accès (appels de méthode) 13
  • 15. Patron de structure Adapter (3/4)  Conséquences ◦ Pour la classe de l’objet qui adapte  Pas possible d’adapter une classe et ses sous-classes  Mais redéfinition possible du comportement (sous- classe) ◦ Pour l’objet qui adapte  Un adapter peut travailler avec plusieurs Adaptees  Plus difficile de redéfinir le comportement d’Adaptee (sous-classer puis obliger Adapter a référencer la sousclasse) 15
  • 16. Patron de structure Adapter (4/4)  Implémentation ◦ Par héritage (multiple) de la classe à adapter, en y ajoutant les méthodes de l’interface cible et en assurant les appels corrects aux méthodes de la classe à adapter ◦ Par composition, selon le même principe (faire correspondre les appels de méthode) sauf que la classe à adapter est un champ de la classe qui adapte 16
  • 17. Exmple Crier en JAVA sur Eclipse 17