Design patterns avec Python

Un design pattern, c'est le nom d'une solution que vous avez sans doute déjà écrite à moitié. On passe en revue les principaux, adaptés à Python plutôt que recopiés de Java, on découvre ceux intégrés au langage, puis on les combine pour résoudre des problèmes réels.

Durée : 3 jours · Niveau : avancé

Pour qui : les développeurs Python expérimentés souhaitant maîtriser les motifs de conception.

Prérequis : maîtrise de Python et de la programmation orientée objet.

Design patterns with Python

Jour 1 — Briques de base

  • Qu'est-ce qu'un design pattern, quand l'utiliser, qui en profite ?
  • Choisir un algorithme à la volée avec l'injection de dépendance
  • Fabriquer du code à la volée avec factory et abstract factory
  • Imiter jQuery avec le pattern chaining
  • S'organiser avec le pattern registry
  • Abstract classes et le pattern template
  • Les objets proxy
  • Composition VS héritage
  • Strategy : une composition avec injection de dépendance
  • State : changer sa stratégie à la volée
  • Abstraire un système complexe avec le pattern facade
  • Mettre des ronds dans des trous carrés avec le pattern adapter
  • Le pattern decorator, le pool et le pattern lazy

Jour 2 — Dispatching et spécificités

  • Accumuler des opérations et les appliquer avec command
  • Pluggabilité et faible couplage grâce à observer
  • Propager une information à des abonnés avec pub/sub
  • Middlewares avec chain of responsibility
  • Intégré au langage : iterator, et comparaison avec visitor
  • Intégré au langage : generator, et parallèle avec facade
  • Intégré au langage : le context manager
  • Getter et setter : pas aussi utiles en Python
  • Duck typing : méthodes dunder, opérateurs et protocoles
  • Intercepter les appels des méthodes
  • Borg, caching, flyweight et modules plutôt que le singleton

Jour 3 — Cas avancés

  • L'art de ne rien faire : identité, pattern null et pattern mock
  • Savoir où on en est avec le pattern state machine
  • Combiner les patterns : observer et decorator
  • Combiner les patterns : strategy et factory
  • Combiner les patterns : chaining et factory
  • Combiner les patterns : state machine et observer
  • Registry + injection de dépendance = inversion of control
  • Le plus gros pattern : MVC

Passez au niveau supérieur en Python !