Qu'est-ce-que les design patterns et comment peuvent-ils améliorer votre efficacité en tant que développeur?

Les origines

En 1977, Christopher Alexander, architecte et urbaniste américain né en 1936, publie son livre "A Pattern Language: Towns, Buildings, Construction", dans lequel il a décrit un ensemble de "patterns" qui décrivent des solutions communes à des problèmes courants de conception d'espaces de vie. Ce livre a été très influent et a contribué à lancer le mouvement du design pattern en architecture et en urbanisme. Mais pas que...

En 1994, un groupe de développeurs de logiciels connus sous le nom de Gang of Four (GoF) se base sur ce concept et publie un livre intitulé "Design Patterns: Elements of Reusable Object-Oriented Software" et popularise l'utilisation des design patterns en informatique.

Késako ?

Les design patterns sont des solutions génériques à des problèmes de conception fréquemment rencontrés lors de la conception de logiciels. Ils sont conçus pour être utilisés comme des modèles de conception, plutôt que comme des solutions de code prêtes à l'emploi.

Les design patterns sont généralement décrits dans des catalogues qui présentent un problème commun de conception, une solution générique à ce problème et un exemple de comment la solution peut être mise en œuvre dans différents langages de programmation. Les développeurs peuvent utiliser ces catalogues de design patterns comme référence lors de la conception de logiciels pour savoir comment résoudre des problèmes de conception courants de manière efficace. Ils ne sont pas destinés à être appliqués tel quel à chaque projet, mais plutôt à être adaptés et utilisés de manière appropriée dans le contexte de chaque projet.

Il est important de comprendre les principes sous-jacents à un design pattern et comment il peut être utilisé pour résoudre un problème de conception particulier avant de décider de l'appliquer à votre code. Une fois que vous avez compris comment le design pattern peut être utile, vous devrez l'adapter et le personnaliser en fonction de vos besoins et de votre contexte de code spécifiques.

Le livre du GoF décrit 23 design patterns de création, de structure et de comportement couramment utilisés en programmation orientée objet. Mais depuis la publication de ce livre, de nombreux autres design patterns ont été développés et documentés par d'autres auteurs. Voici quelques exemples de design patterns qui ne sont pas inclus dans le livre du GoF :

  • Design patterns d'IHM : Ces patterns sont conçus pour aider à la conception d'interfaces utilisateur conviviales et efficaces. Exemples : pattern "model-view-controller" (MVC), pattern "model-view-viewmodel" (MVVM).
  • Design patterns de sécurité : Ces patterns sont conçus pour aider à la mise en œuvre de la sécurité dans les applications. Exemples : pattern "firewall", pattern "single sign-on" (SSO).
  • Design patterns de concurrence : Ces patterns sont conçus pour aider à la gestion de la concurrence dans les applications multithread. Exemples : pattern "thread pool", pattern "producer-consumer".
  • Design patterns de test : Ces patterns sont conçus pour aider à la conception de tests unitaires et de tests d'intégration. Exemples : pattern "mock object", pattern "test stub".
  • Design patterns de machine learning: Solutions aux problèmes courants de préparation des données, d'élaboration de modèles et de Mlops
  • ...

Aujourd'hui, de nouveaux patterns continuent d'être développés et documentés par la communauté des développeurs de logiciels.

Références