Outils pour utilisateurs

Outils du site


helloworld:design_pattern

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
helloworld:design_pattern [2020/02/09 22:13] – WIP : refactoring roothelloworld:design_pattern [2020/03/02 22:24] (Version actuelle) – Ajout d'un lien pour État root
Ligne 1: Ligne 1:
 =====Gang of four==== =====Gang of four====
 +
 +[[https://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-of-four/|Design Patterns du Gang of Four appliqués à Java]] {{ :helloworld:design_pattern:designpatternsgof.pdf |Archive du 08/11/2019 le 10/02/2020}}
 +
 +{{ :helloworld:design_pattern:design_patterns_-_elements_of_reusable_object-oriented_software.pdf |Design Patterns - Elements of reusable object-oriented software}}
 +
 ====Création==== ====Création====
   * [[helloworld:design_pattern:singleton|Singleton]]   * [[helloworld:design_pattern:singleton|Singleton]]
Ligne 9: Ligne 14:
   * [[helloworld:design_pattern:fabrique_abstraite|Fabrique abstraite]]   * [[helloworld:design_pattern:fabrique_abstraite|Fabrique abstraite]]
 Ce patron permet de gérer différentes fabriques concrètes à travers l'interface d'une fabrique abstraite. Ce patron permet de gérer différentes fabriques concrètes à travers l'interface d'une fabrique abstraite.
 +
 +C'est la généralisation de la Fabrique. On demande la fabrication à une interface (et donc on ne sait pas à quelle classe précisément).
   * Monteur   * Monteur
 Ce patron permet la construction d'objets complexes en construisant chacune de ses parties sans dépendre de la représentation concrète de celles-ci. Ce patron permet la construction d'objets complexes en construisant chacune de ses parties sans dépendre de la représentation concrète de celles-ci.
Ligne 22: Ligne 29:
 Ce patron permet d'adapter une interface existante à une autre interface. Ce patron permet d'adapter une interface existante à une autre interface.
   * Façade   * Façade
-Ce patron de conception permet de simplifier l'utilisation d'une interface complexe.+Ce patron de conception permet de simplifier l'utilisation d'une interface complexe, généralement répartie sur plusieurs classes.
   * [[helloworld:design_pattern:proxy|Proxy]]   * [[helloworld:design_pattern:proxy|Proxy]]
 Passer par un objet intermédiaire avant d'atteindre le bon. Passer par un objet intermédiaire avant d'atteindre le bon.
Ligne 34: Ligne 41:
 ====Comportement==== ====Comportement====
   * [[helloworld:design_pattern:chain_of_responsibility|Chaîne de responsabilité]]   * [[helloworld:design_pattern:chain_of_responsibility|Chaîne de responsabilité]]
-Permet de construire une chaîne de traitement pour une même requête. +Permet de construire une chaîne de traitement pour une même requête. L'implémentation peut être sous la forme d'une machine à états finis
-  * Commande +  * [[helloworld:design_pattern:command|Commande]] 
-Encapsule l'invocation d'une commande.+Exécuter une commande par l'intermédiaire d'un [[helloworld:design_pattern:command:invocateur|invocateur]]. On peut également implémenter un [[helloworld:design_pattern:command:undomanager|Undomanager]] (undo/redo).
   * Interpréteur   * Interpréteur
 Interpréter un langage spécialisé. Interpréter un langage spécialisé.
   * Itérateur   * Itérateur
 Parcourir un ensemble d'objets à l'aide d'un objet de contexte (curseur). Parcourir un ensemble d'objets à l'aide d'un objet de contexte (curseur).
-  * Médiateur +
-Réduire les dépendances entre un groupe de classes en utilisant une classe Médiateur comme intermédiaire de communication.+
   * Mémento   * Mémento
 Mémoriser l'état d'un objet pour pouvoir le restaurer ensuite. Mémoriser l'état d'un objet pour pouvoir le restaurer ensuite.
 +
   * [[helloworld:design_pattern:observer|Observateur]] / [[helloworld:design_pattern:publish_subscribe|Publier-souscrire]] / [[helloworld:design_pattern:reactor|Reactor]]   * [[helloworld:design_pattern:observer|Observateur]] / [[helloworld:design_pattern:publish_subscribe|Publier-souscrire]] / [[helloworld:design_pattern:reactor|Reactor]]
 Intercepter un évènement pour le traiter. Intercepter un évènement pour le traiter.
Ligne 54: Ligne 61:
 Reactor : proche de l'observateur, ici, Reactor ne transmet pas de message, il exécute directement la méthode. Reactor : proche de l'observateur, ici, Reactor ne transmet pas de message, il exécute directement la méthode.
  
-  * État +  * Médiateur 
-Gérer différents états à l'aide de différentes classes.+Réduire les dépendances entre un groupe de classes en utilisant une classe Médiateur comme intermédiaire de communication. 
 + 
 +Cela peut-être implémenté par le pattern observateur si tous les objets sont indépendants. 
 + 
 +  * [[helloworld:design_pattern:etat|État]] 
 +Une classe gère différents états à l'aide de différentes classes. Il permet de créer des machines à états finis.
  
   * [[helloworld:design_pattern:strategie|Stratégie]]   * [[helloworld:design_pattern:strategie|Stratégie]]
Ligne 78: Ligne 90:
  
 [[helloworld:design_pattern:serialize|Sérialisation ou Marshalling]] : (pattern ?)convertir des données en format binaire et inversement. [[helloworld:design_pattern:serialize|Sérialisation ou Marshalling]] : (pattern ?)convertir des données en format binaire et inversement.
- 
-[[helloworld:design_pattern:invocateur|Invocateur]] : démarrer et arrêter un service. 
- 
-[[helloworld:design_pattern:command|Commande]] : exécuter une commande, éventuellement par l'intermédiaire d'un [[helloworld:design_pattern:invocateur|invocateur]]. On peut également implémenter un [[helloworld:design_pattern:command:undomanager|Undomanager]] (undo/redo). 
  
 [[helloworld:design_pattern:interceptor|Intercepteur]] : ajouter des fonctionnalités, avant et après l'appel d'une méthode et voir pourquoi pas appeler une autre méthode à la place. [[helloworld:design_pattern:interceptor|Intercepteur]] : ajouter des fonctionnalités, avant et après l'appel d'une méthode et voir pourquoi pas appeler une autre méthode à la place.
  
helloworld/design_pattern.1581282819.txt.gz · Dernière modification : 2020/02/09 22:13 de root