Design

Comment mettre en place un design pattern ?

17 février 2021

Ce concept de design pattern est arrivé dans les années 70 puis formalisé dans le livre du “Gang of Four” : Erich Gamma, Richard Helm, Ralph Johnson, et John Vlissides, en 1994 : “Design Patterns – Elements of reusable object-oriented software”. Dans ce livre, 23 modèles de conception y sont présentés, les plus répandus aujourd’hui, même s’il en existe des dizaines d’autres.

Qu’est-ce qu’un design pattern ou “modèle de conception” ?

Résumé simplement, un design pattern est un schéma représentant une solution à un problème récurrent dans le monde de la programmation.

Retranscrit dans la réalité, on pourrait prendre l’exemple du correcteur automatique de nos ordinateurs ou smartphones. Dans un message, par précipitation ou faute d’attention, combien faisons-nous de fautes d’orthographe que notre cher correcteur corrige pour nous, nous évitant ainsi bon nombre d’erreurs de compréhension ou de lapsus ? 

Eh bien les programmateurs, dans leur domaine de prédilection, ont eux aussi prévu ces erreurs et créé un modèle pour y remédier. 

L’objectif principal des design pattern est de réduire le temps de conception d’une application tout en augmentant la qualité du résultat.

Un design pattern suit une structure fixe : 

En programmation informatique, les design patterns peuvent être utilisés avant, pendant, ou après le travail de programmation : 

L’architecte Christopher Alexander constate que la phase de conception, en architecture, s’accompagne de difficultés récurrentes. Afin de résoudre ces problèmes de solidité de la structure, il crée un ensemble de 253 patterns.

« Chaque design pattern décrit un problème qui se manifeste constamment dans notre environnement et donc décrit le cœur de la solution à ce problème, d’une façon telle que l’on puisse réutiliser cette solution des millions de fois sans jamais le faire deux fois de la même manière. »

Parmi ces 253 patterns, Christopher Alexander en a adapté 23 aux design pattern, regroupés dans 3 grandes familles : 

Chacune de ces familles comportent des modèles principaux, que nous allons introduire :

La première famille, les motifs de création, composée de 5 modèles :

ModèlesDescriptions
Fabrique (Factory)
Créer un objet dont le type dépend du contexte

Fabrique abstraite (abstract Factory)
Fournir une interface unique pour instancier des objets d’une même famille sans avoir à connaître les classes à instancier

Monteur (Builder)
Ce patron sépare le processus de construction d’un objet du résultat obtenu. Permet d’utiliser le même processus pour obtenir différents résultats

Prototype (Prototype)
Création d’objet à partir d’un prototype

Singleton (Singleton)
Classe qui ne pourra avoir qu’une seule instance

La seconde représente les modèles de structuration :

Modèles
Descriptions

Adaptateur (adaptor)
Permet d’encapsuler un objet autrement incompatible dans un adaptateur pour le rendre compatible avec une autre classe.

Pont (bridge)
Consiste à préférer la composition à l’héritage. Les détails d’implémentation sont poussés d’une hiérarchie vers un autre objet avec une hiérarchie distincte.

Composite (composite)
Permet aux clients de traiter les objets individuels de manière uniforme.

Décorateur (decorator)
Modifie dynamiquement le comportement d’un objet au moment de l’exécution en l’enveloppant dans un objet d’une classe de décorateur.

Façade (facade)
Fournit une interface simplifiée à un sous-système complexe.

Poids mouche (flyweight)
Utilisé pour minimiser l’utilisation de la mémoire ou les dépenses de calcul en partageant autant que possible avec des objets similaires.

Procuration (proxy)
Une classe représente la fonctionnalité d’une autre classe.

Les modèles de conception comportementaux :

ModèlesDescriptions
Chaine de responsa-
bilité
(chain of responsability)

Aide à construire une chaîne d’objets.
Commander
(command)

Permet d’encapsuler des actions dans des objets. → fournir les moyens de découpler le client du récepteur.
Itérateur
(Iterator)

Moyen d’accéder aux éléments d’un objet sans exposer la présentation sous-jacente.
Médiateur
(mediator)

 Ajoute un objet tiers pour contrôler l’interaction entre deux objets 
→ réduire le couplage entre les classes communiquant entre elles. 
Mémento
(memento)

Capturer et stocker l’état actuel d’un objet de manière à ce qu’il puisse être restauré ultérieurement de manière fluide.
Observateur
(observer)

Définit une dépendance entre les objets 
Visiteur
(visitor)

Permet d’ajouter d’autres opérations aux objets sans avoir à les modifier.
Stratégie
(strategy)

Changer d’algorithme ou de stratégie en fonction de la situation.
Etat
(state)
Modifier le comportement d’une classe lorsque l’état change.
Méthode de modèle
(template method)
Définit le squelette de la façon dont un certain algorithme peut être exécuté

Un avantage supplémentaire aux designs pattern : l’apprentissage cognitif.

En effet, au-delà des bénéfices qu’ils apportent aux programmateurs, ces design pattern servent également à l’utilisateur, via l’UX/UI Design. En interagissant avec les produits, les utilisateurs prennent des habitudes. Ils recherchent naturellement un modèle qu’ils connaissent déjà, par exemple un bouton ayant telle apparence.

Face à un problème récurrent en conception, les design patterns sont des solutions standardisées, modifiables et adaptables. Ils facilitent également le travail d’équipe entre les concepteurs. Enfin, les patterns correspondent aussi aux habitudes des utilisateurs et leur procurent donc une meilleure expérience.

Si vous souhaitez en savoir plus, nos développeurs seront ravis de répondre à vos questions 😉 

Quel est votre projet ?

Nous vous accueillons dans notre agence, au cœur de Paris pour parler de votre projet.
Notre équipe se fera un plaisir de vous écouter autour d’un café  !

    Un projetUne candidatureWhat else