Menu
Coddy logo textTech

Introduction aux patrons de conception

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 70 sur 91.

Les patrons de conception (design patterns) sont des solutions éprouvées à des problèmes courants que les développeurs rencontrent de manière répétée lors de la création de logiciels. Plutôt que de réinventer la roue à chaque fois, vous pouvez appliquer ces modèles établis pour résoudre des défis similaires dans votre propre code.

Considérez les patrons de conception comme des recettes. Tout comme un chef suit une recette pour créer un plat qui a été perfectionné au fil du temps, les développeurs utilisent des patrons de conception pour structurer leur code de manières qui ont été testées et affinées par d'innombrables programmeurs avant eux.

Les modèles de conception sont généralement regroupés en trois catégories :

Catégorie Objectif Exemples
Création Comment les objets sont créés Singleton, Fabrique
Structure Comment les objets sont composés Adaptateur, Décorateur
Comportement Comment les objets communiquent Observateur, Stratégie

Vous avez en fait utilisé des patrons de conception tout au long de ce cours sans vous en rendre compte. Lorsque vous avez créé des classes abstraites avec des méthodes que les classes filles doivent implémenter, vous appliquiez une forme du patron Template Method. Lorsque vous avez utilisé des interfaces pour définir des contrats, vous vous prépariez au patron Strategy.

Apprendre les patrons de conception vous donne un vocabulaire commun avec d'autres développeurs. Au lieu d'expliquer une structure complexe en détail, vous pouvez simplement dire « J'ai utilisé le patron Factory ici » et les développeurs expérimentés comprendront immédiatement votre approche. Dans les leçons suivantes, nous implémenterons plusieurs patrons essentiels en PHP.

challenge icon

Défi

Facile

Construisons un système simple de formatage de messages qui démontre comment les patrons de conception aident à organiser le code. Vous identifierez à quelle catégorie de patron chaque composant appartient et verrez comment les différentes parties d'un système fonctionnent ensemble.

Vous organiserez votre code sur trois fichiers :

  • MessageFormatter.php — Créez une interface nommée MessageFormatter qui définit un contrat pour le formatage des messages. Elle doit avoir une seule méthode format(string $message): string. Cela représente la catégorie behavioral (comportementale) — elle définit comment les objets communiquent et traitent les données.
  • Formatters.php — Incluez le fichier MessageFormatter et créez deux classes qui implémentent l'interface :
    • UppercaseFormatter — Sa méthode format() retourne le message converti en majuscules
    • BracketFormatter — Sa méthode format() enveloppe le message dans des crochets comme [message]
  • main.php — Incluez le fichier Formatters. Vous recevrez deux entrées : une chaîne de caractères pour le message et un type de formateur ("upper" ou "bracket").

    Créez une fonction nommée processMessage qui accepte un MessageFormatter et une chaîne de caractères de message, puis retourne le résultat formaté. Cette fonction n'a pas besoin de savoir quel formateur spécifique elle reçoit — elle appelle simplement format() sur n'importe quel objet qui lui est passé.

    En fonction du type de formateur reçu en entrée, créez l'objet formateur approprié. Passez-le à votre fonction processMessage avec le message, et affichez le résultat.

    Sur une nouvelle ligne, affichez la catégorie de patron que cette structure représente. Puisque nous définissons des comportements interchangeables via une interface, affichez : Pattern category: Behavioral

Ce défi montre comment les interfaces vous permettent d'échanger des implémentations sans modifier le code qui les utilise — une base pour des patrons comme Strategy que vous explorerez dans les prochaines leçons.

Aide-mémoire

Les patrons de conception (design patterns) sont des solutions éprouvées à des problèmes de programmation courants qui fournissent des modèles pour structurer le code efficacement.

Les patrons de conception sont regroupés en trois catégories :

Catégorie Objectif Exemples
Création Comment les objets sont créés Singleton, Factory
Structure Comment les objets sont composés Adapter, Decorator
Comportement Comment les objets communiquent Observer, Strategy

Les patrons de conception fournissent un vocabulaire commun aux développeurs, facilitant la communication des décisions architecturales complexes.

Essayez vous-même

<?php
require_once 'Formatters.php';

// Lire l'entrée
$message = trim(fgets(STDIN));
$formatterType = trim(fgets(STDIN));

// TODO: Créer une fonction appelée processMessage qui accepte un MessageFormatter
// et une chaîne de message, puis retourne le résultat formaté


// TODO: Selon $formatterType ("upper" ou "bracket"), créer le formateur approprié


// TODO: Appeler processMessage avec le formateur et le message, puis afficher le résultat


// TODO: Afficher la catégorie du patron sur une nouvelle ligne
// Format: "Pattern category: Behavioral"

?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet