Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Design Patterns en Java
  3. Introduction aux patterns de conception
Extrait - Design Patterns en Java Descriptions et solutions illustrées en UML 2 et Java (5e édition) - Les 23 modèles de conception
Extraits du livre
Design Patterns en Java Descriptions et solutions illustrées en UML 2 et Java (5e édition) - Les 23 modèles de conception Revenir à la page d'achat du livre

Introduction aux patterns de conception

Design Patterns ou patterns de conception

Un design pattern ou pattern de conception consiste en un schéma à objets qui forme une solution à un problème connu et fréquent. Le schéma à objets est constitué par un ensemble d’objets décrits par des classes et des relations liant les objets.

Les patterns répondent à des problèmes de conception de logiciels dans le cadre de la programmation par objets. Ce sont des solutions connues et éprouvées dont la conception provient de l’expérience de programmeurs. Il n’y a pas d’aspect théorique dans les patterns, notamment pas de formalisation (à la différence des algorithmes).

Les patterns sont basés sur les bonnes pratiques de la programmation par objets. Par exemple, la figure 1.1 donne l’exemple du pattern Template method qui sera décrit au chapitre Le pattern Template Method. Dans ce pattern, la méthode calculeMontantTtc invoque la méthode calculeTva qui est abstraite dans la classe Commande. Elle est définie dans les sous-classes de Commande à savoir les classes CommandeFrance et CommandeLuxembourg. En effet, le taux de TVA varie en fonction du pays. La méthode calculeMontantTtc est appelée méthode "modèle" (template method). Elle introduit un algorithme basé sur une méthode...

La description des patterns de conception

Nous avons fait le choix de décrire les patterns de conception à l’aide des deux langages suivants :

Les patterns de conception sont introduits de la partie 2 - Patterns de construction à la partie 4 - Patterns de comportement. Pour chaque pattern, les éléments suivants sont présentés :

  • Le nom du pattern.

  • La description du pattern.

  • Un exemple décrivant le problème et la solution basée sur le pattern décrit sous la forme d’un diagramme de classes UML. Au sein de ce schéma, le corps des méthodes est décrit à l’aide de notes.

  • La structure générique du pattern, à savoir :

    • Son schéma en dehors de tout contexte particulier sous la forme d’un diagramme de classes UML.

    • La liste des participants au pattern.

    • Les collaborations au sein du pattern.

  • Les domaines d’application du pattern.

  • L’exemple présenté cette fois sous la forme d’un programme Java complet et documenté. Ce programme n’utilise pas d’interface graphique mais exclusivement les entrées/sorties de l’écran et du clavier.

Le catalogue des patterns de conception

Dans ce livre nous présentons les vingt-trois patterns de conception introduits dans l’ouvrage de référence "GoF". Ces patterns sont autant de réponses différentes à des problèmes connus de la programmation par objets. La liste qui suit n’est pas exhaustive, elle provient, comme nous l’avons déjà expliqué, de l’expérience.

  • Abstract Factory : a pour objectif 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.

  • Builder : permet de séparer la construction d’objets complexes de leur implantation de sorte qu’un client puisse créer ces objets complexes avec des implantations différentes.

  • Factory Method : a pour but d’introduire une méthode abstraite de création d’un objet en reportant aux sous-classes concrètes la création effective.

  • Prototype : permet la création de nouveaux objets par duplication d’objets existants appelés prototypes qui disposent de la capacité de clonage.

  • Singleton : permet de s’assurer qu’une classe ne possède qu’une seule instance et de fournir une méthode unique retournant cette instance.

  • Adapter : a pour but de convertir l’interface...

Comment choisir et utiliser un pattern de conception  pour résoudre un problème

Pour savoir s’il existe un pattern de conception qui réponde à un problème donné, une première étape consiste à regarder les descriptions de la section précédente et à déterminer s’il existe un ou plusieurs patterns dont la description s’approche de celle du problème.

Puis, il convient d’étudier en détail le ou les patterns découverts à l’aide de leur description complète se trouvant de la partie 2 - Patterns de construction à la partie 4 - Patterns de comportement. En particulier, il convient d’étudier au travers de l’exemple fourni et de la structure générique si le pattern répond de façon pertinente au problème. Cette étude doit surtout inclure la possibilité pour la structure générique d’être adaptée et il faut donc, en fait, chercher si le pattern après adaptation répond au problème. Cette étape d’adaptation est une étape importante de l’utilisation du pattern pour résoudre un problème. Nous la décrivons par la suite.

Une fois qu’un pattern est choisi, son utilisation dans une application comprend plusieurs étapes :

  • Étudier de façon...

Organisation du catalogue des patterns de conception

Pour organiser le catalogue des patterns de conception, nous reprenons la classification du "GoF" qui organise les patterns selon leur vocation : construction, structuration et comportement.

Les patterns de construction ont pour but d’organiser la création d’objets. Ils sont décrits dans la partie 2 - Patterns de construction. Ils sont au nombre de cinq : Abstract Factory, Builder, Factory Method, Prototype et Singleton.

Les patterns de structuration facilitent l’organisation de la hiérarchie des classes et de leurs relations. Ils sont décrits dans la partie 3 - Patterns de structuration. Ils sont au nombre de sept : Adapter, Bridge, Composite, Decorator, Facade, Flyweight et Proxy.

Enfin, les patterns de comportement proposent des solutions pour organiser les interactions et pour répartir les traitements entre les objets. Ils sont décrits dans la partie 4 - Patterns de comportement. Ils sont au nombre de onze : Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method et Visitor.