Les patterns

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 such a way that you can use this solution a million times over, without ever doing it the same way twice.
« Chaque modèle décrit un problème récurent dans notre environnement, et puis décrit le noyau de la solution à ce problème, de telle manière que vous puissiez employer cette solution plus d'un million de fois, sans jamais devoir le faire de la même manière deux fois. »
Christopher Alexander

Alexander évoquait les “Patterns” (en français, « patrons, modèles ») dans le cadre de la construction d'édifices et de villes, mais cette définition colle de très près à la programmation objets.

Développé dans les années 70, le concept de “design patterns” (en français, « motifs de conception ») fait l'objet d'un ouvrage de référence publié en 1994 (Design Patterns : Elements of reusable object oriented softwareref 1), identifiant 23 motifs de conceptions, chacun offrant une solution à un problème récurrent de la conception orientée-objet.

Craig Larman3 nous fournit une autre contribution de référence qui décrit des modèles de conception plus intuitifs : les GRASP “Patterns”1.

NB : Nous retrouvons souvent l'acronyme GOF [“Gang Of Four”4], qui désigne les 4 personnes qui consacrèrent leurs recherches aux design patterns : Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides.6

Synthèse : Un “pattern”1, est donc un document qui décrit une solution générale à un problème qui revient souvent.

Inhaltsverzeichnis Haut

Structure d'un pattern

Le langage de “pattern”1 est défini par la structure suivante :

  • nom du “pattern”1 : le nom d'un “pattern”1 permet tout d'abord de faciliter la communication en nous permettant d'identifier précisément une situation lors du développement d'applications, sans que notre interlocuteur ne doive maîtriser le même langage de programmation que nous. Nous pouvons atteindre un haut degré d'abstraction en utilisant le nom correct du “pattern”1, sans devoir évoquer la moindre ligne de code.
  • problème : le problème, ou contexte, décrit dans quelle situation le “pattern”1 peut nous aider. Souvent, les conditions du problème sont ajoutées à sa description.
  • solution : la solution ne décrit pas des éléments concrets de "design"7 ou des implémentations précises. Il s'agit d'un modèle qu'il est possible d'appliquer à de nombreuses situations différentes, mais qui toutes amènent au problème décrit.
  • conséquences du “pattern”1 : les conséquences permettent d'évaluer les coûts et bénéfices des différentes alternatives possibles.

Catalogue des 23 patterns du GOF

6
  • “Creational Patterns” (en français, « motifs de création ») :
    • “Abstract Factory” (en français, « fabrique abstraite ») : permet un point d'accès à la création de familles d'objets liés entre eux ou dépendant les uns des autres, indépendament de leurs classes concrètes.
    • “Builder” (en français, « constructeur ») : permet de séparer la construction d'un objet complexe de sa représentation, de telle manière que le même processus de construction puisse différentes représentations.
    • “Factory Method” (en français, « fabrique ») : permet un point d'accès à la création d'objets tout en laissant aux sous-classes le soin de la sélection de la classe qui devra être instanciée.
    • “Prototype” (en français, « prototype ») : permet de spécifier le type d'objets à créer en utilisant une instance prototype. Le prototype sera copié pour créer les nouveaux objets.
    • “Singleton” (en français, « instance unique ») : permet de nous assurer qu'une seule instance d'un objet sera créée, et de nous fournir un point d'accès vers ce dernier.
  • “Structural Patterns” (en français, « motifs de structure ») :
    • “Adapter” (en français, « adaptateur ») : permet d'adapter par encapsulatrion les signatures de methodes d'une classe vers une autre.
    • “Bridge” (en français, « pont ») : permet de différencier une abstraction de son implémentation, permettant à chacune d'évoluer indépendamment.
    • “Composite” (en français, « objet composite ») : permet de traiter une structure d'objets de manière uniforme.
    • “Decorator” (en français, « décorateur ») : permet de créer une classe qui étend les capacités d'une ou de plusieurs classes.
    • “Facade” (en français, « façade ») : nous facilite l'usage d'un sous-système, en définissant une interface de haut niveau qui unifie les interfaces du sous-système.
    • “Flyweight” (en français, « poids-mouche, ou poids-plume ») : partage des éléments nécessaires à un grand nombre d'objets, ce qui évite de les maintenir en duplicats dans les différents objets qui en ont besoin.
    • “Proxy” (en français, « procuration, substitut ») : oblige les appels des méthodes d'un objet à passer par un objet (“proxy”21) qui agit comme un substitut pour l'autre objet, déléguant les appels de méthodes à cet objet. Les classes sont créées de telle sorte que l'objet client ne peut voir qu'il travaille avec un “proxy”21.
  • “Behavioral Patterns” (en français, « motifs de comportement ») :
    • “Chain of Responsibility” (en français, « chaîne de responsabilité ») : permet un plus faible couplage dans le cas où un élément est attendu par un grand nombre d'objets, en passant l'élément à un seul objet qui le passe au suivant, et ainsi de suite au long de la chaîne.
    • “Command” (en français, « commande ») : encapsule une requête dans un objet, et permet les files d'attentes, les journalisations , et “undo” (en français, « annulation de la dernière opération »).
    • “Interpreter” (en français, « interpréteur ») : définit un langage ainsi que sa grammaire, et fournit un interpreteur pour utiliser la représentation du langage.
    • “Iterator” (en français, « itérateur ») : fournit un accès aux éléments d'un agrégat d'objets indépendament de la représentation réelle de l'agrégation (le type de tableau, de collection utilisé).
    • “Mediator” (en français, « médiateur ») : définit un objet qui encapsule la manière dont un ensemble d'objets interagissent.
    • “Memento” (en français, « mémento ») : permet, sans violer l'encapsulation, de capturer et d'externaliser l'état interne d'un objet pour le mémoriser afin de le restaurer par la suite si nécessaire.
    • “Observer” (en français, « observateur ») : permet aux objets d'enregistrer dynamiquement les dépendances entre objets, de telle sorte qu'un objet qui change d'état le notifie à tous ceux qui dépendent de lui, sans qu'il ne les connaisse réellement.
    • “State” (en français, « état ») : permet d'altérer le comportement d'un objet en fonction de son état interne.
    • “Strategy” (en français, « stratégie ») : définit une famille d'algorithmes, encapsule chacun d'eux, et les rend interchangeable.
    • “Template Method” (en français, « modèle de méthode ») : définit le squelette d'un algorithme dans une opération, déléguant certaines étapes aux sous-classes. Il permet de redéfinir certaines étapes d'un algorithme sans en changer la structure.
    • “Visitor” (en français, « visiteur ») : permet de séparer un algorithme de la structure d'un objet.

Inhaltsverzeichnis Haut

Remarque

Dans les pages qui suivent, les concepts employés se veulent indépendants d'un langage de programmation. Par exemple, le terme interface sera souvent employé pour évoquer ce qui se situe entre deux éléments, et non pour évoquer une classe de type interface en orienté-objet.

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 22/05/2005, zuletzt geändert 23/09/2019
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/analyse-pattern.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.

Aufzeichnungen
  1. a,b,c,d,e,f… 3 weitere Links… Patterns : entspricht « patrons, modèles » en français

  2.  design patterns : entspricht « motifs de conception » en français

  3.  Craig Larman : informaticien canadien spécialisé dans l'analyse et conception orientée objet, auteur des GRASP Patterns.

  4. a,b Gang Of Four : entspricht « bande des 4 » en français

  5.  GOF : “Gang Of Four” (en français, « bande des 4 »)

  6. a,b GOF : Nous retrouvons souvent l'acronyme GOF [“Gang Of Four”4], qui désigne les 4 personnes qui consacrèrent leurs recherches aux design patterns : Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides.

  7.  design : entspricht « conception » en français

  8.  Creational Patterns : entspricht « motifs de création » en français

  9.  Abstract Factory : entspricht « fabrique abstraite » en français

  10.  Builder : entspricht « constructeur » en français

  11.  Factory Method : entspricht « fabrique » en français

  12.  Prototype : entspricht « prototype » en français

  13.  Singleton : entspricht « instance unique » en français

  14.  Structural Patterns : entspricht « motifs de structure » en français

  15.  Adapter : entspricht « adaptateur » en français

  16.  Bridge : entspricht « pont » en français

  17.  Composite : entspricht « objet composite » en français

  18.  Decorator : entspricht « décorateur » en français

  19.  Facade : entspricht « façade » en français

  20.  Flyweight : entspricht « poids-mouche, ou poids-plume » en français

  21. a,b,c Proxy : entspricht « procuration, substitut » en français

  22.  Behavioral Patterns : entspricht « motifs de comportement » en français

  23.  Chain of Responsibility : entspricht « chaîne de responsabilité » en français

  24.  Command : entspricht « commande » en français

  25.  undo : entspricht « annulation de la dernière opération » en français

  26.  Interpreter : entspricht « interpréteur » en français

  27.  Iterator : entspricht « itérateur » en français

  28.  Mediator : entspricht « médiateur » en français

  29.  Memento : entspricht « mémento » en français

  30.  Observer : entspricht « observateur » en français

  31.  State : entspricht « état » en français

  32.  Strategy : entspricht « stratégie » en français

  33.  Template Method : entspricht « modèle de méthode » en français

  34.  Visitor : entspricht « visiteur » en français

Inhaltsverzeichnis Haut

Referenzen

  1. Buch Sprache des Dokuments:uk Design Patterns : Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides, Elements of Reusable Object-Oriented Software (1994)

Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.

Inhaltsverzeichnis Haut