Les Design Pattern ! Un petit aperçu !

Logo d'engrenages avec des classes UML en arrière plan

Il arrive parfois sur le net que des développeurs parlent de design pattern, mais qu’est-ce donc qu’un design pattern au juste ? Souvent mécompris, voir même totalement obscure pour certain, j’ai moi même du mal à trouver des explications simples et concrètes sur leur utilisation, pourtant les design pattern est une stratégie à part entière qui fait souvent la différence entre un projet casse tête et un autre facile à développer. Ici je vais tenter d’expliquer ce concept et leurs rôles dans un programme, c’est parti !

Un Design Pattern, ou en français, un patron de conception est une sorte de modèle de programmation à suivre qui permettent de régler des erreurs conception qui peuvent ou qui pourrait causer de nombreux problèmes.

En effet, il y a des problèmes que les programmeurs rencontrent systématiquement et souvent ce sont les mêmes types de problèmes. Pour éviter que tout le monde tombe sur ces mêmes soucis à chaque fois, les devs ont eu l’idée de créer des solutions toutes faites que sont les design pattern. Un design pattern est une solution sous la forme de bonne pratique et de modèle à suivre, qui permettent de prévenir voir de corriger des erreurs de programmation en implémentant ces schémas dans le code.

Si bien utilisé, ils permettent d’améliorer grandement la lisibilité et la maintenance d’un code source tout en réglant des problèmes qui existent déjà ou qui pourraient venir au fil du développement. En revanche, utiliser des design pattern à tout va et sans raison particulière peut être catastrophique et créer des soucis qui n’existait pas, en plus de faire perdre du temps. Les design pattern sont utilisés dans de grands projets de développement orientés objet, il est inutile d’en utiliser si votre code fait 30 lignes. Par contre si vous pensez que le projet prendra de plus en plus d’ampleur dans son développement, il est bon d’intégrer les design pattern au tout début.

Les design pattern sont donc des outils puissants, mais à double tranchant, je ne peux pas renter dans le détail pour chaque pattern, cela nécessite un long article pour chacun d’entre eux pour bien expliquer leur fonctionnement, mais je vais m’occuper de dresser une courte liste de ceux-ci 8-).

On distingue 3 types de design pattern

Les design pattern de structure …

… ou d’architecture qui sont des modèles qui vont s’occuper comme son nom l’indique, de toute la structure du programme. Son rôle est de faire en sorte que les classes soient organisées de façon la plus efficace possible suivant une situation donnée. On retrouve dans cette catégorie pour les plus connus :

  • L’Adapter, un pattern qui va permettre à deux classes incompatibles de travailler ensemble en se glissant entre les deux. 😎
  • Le Composite qui va regrouper plusieurs objets avec des fonctionnalités similaires en un seul objet composite, cet objet sera donc composé de plusieurs autres objets, ce qui va permettre de faire des actions groupées sur tout ses composants.
  • Le Decorator qui va se charger d’ajouter des fonctionnalités supplémentaires à un objet, un peu comme l’héritage en POO, sans affecter le fonctionnement de celui-ci, et tout ça pendant l’exécution même du programme !
  • le MVC (Modèle-Vue-Controleur) qui est très utilisé en développement web, elle permet de séparer le programme en 3 parties distinctes ce qui a pour but d’améliorer la lisibilité et la maintenance du code.

Les design pattern de création …

… sont des modèles qui vont s’occuper de la création et de la configuration des objets de la manière la plus adaptée possible, toujours à une situation donnée. Nous retrouvons donc :

  • Le singleton dont son rôle est de s’assurer qu’une classe soit instanciée qu’une seule fois et qu’il puisse être accessible partout dans le code.
  • Le Builder qui permet de construire petit à petit et de façon plus lisible, des objets lourds et très complexes, qui nécessitent beaucoup de paramètres, optionnel ou non, pour être instancié.
  • Les Factory, il y en existe deux sortes, grosso modo ils vont se charger d’instancier des objets en fonction des paramètres qu’on lui envoie et nous retourner l’objet en question.
  • Le Prototype permet de créer nombreux objets lourds et complexe tout en conservant une bonne performance au niveau de l’application. Pour cela au lieu d’instancier une classe qui prendrait énormément de temps à s’instancier, ce pattern va cloner un objet existant, donc sans passer par les actions couteuses en temps.

Les design pattern de comportement …

… quant à eux, vont s’occuper d’assurer une bonne communication, ou, disons plutôt un bon transfert de données entre les objets :

  • L’Iterator permet d’accéder aux éléments d’une collection ou d’un tableau sans avoir à gérer la manière dont fonctionne cet ensemble de données comme l’index ou les limites d’un tableau par exemple.
  • Le Template permet de définir un modèle et un comportement standard pour les objets qui l’utilise, cela permet d’assurer à l’objet d’exécuter le même code et la possibilité de redéfinir certaines étapes de l’algorithme.
  • Le Strategy va permettre à un objet de changer son comportement en pleine exécution d’un programme. L’objet en question peut se métamorphoser et changer de code grâce à ce pattern.
  • L’Observer permet de rendre un objet « observable » par d’autres objets, si un événement quelconque se produit dans l’élément observable, tous les autres objets qui l’observe seront au courant et peuvent agir en conséquence.

Ce n’est pas la liste complète, il y en a bien d’autres, vous noterez que leurs noms décrivent souvent à quoi ils servent dans une application et qu’il n’est pas nécessaire de tous les intégrer, seulement ceux que vous jugerez utiles dans votre projet.

Mais retenez bien que pour chaque problème de conception rencontré lors d’un développement, un pattern existe et peut vous aider ! Au lieu de buter et de passer des semaines entières à vous casser la tête, chose qu’on aime pas ici, jeter un petit coup d’œil sur la liste des patterns !

A++ 🙂

 

Partager l’article :
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.