Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
helloworld:design_pattern [2020/02/09 22:13] – WIP : refactoring root | helloworld:design_pattern [2020/03/02 22:24] (Version actuelle) – Ajout d'un lien pour État root |
---|
=====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]] |
* [[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. |
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. |
====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. |
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]] |
| |
[[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. |
| |