Menu
Coddy logo textTech

Introduction aux patrons de conception

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy. Leçon 51 sur 70.

Les patrons de conception sont des solutions éprouvées à des problèmes courants que les développeurs rencontrent régulièrement lors de la création de logiciels. Plutôt que de réinventer la roue à chaque fois, les patrons nous fournissent un vocabulaire commun et des approches testées pour structurer le code.

Considérez les patrons de conception comme des plans. Ils ne vous donnent pas de code exact à copier, mais décrivent comment organiser les classes et les objets pour résoudre des problèmes spécifiques. Lorsqu'une personne mentionne « utilisez le patron Factory ici », les développeurs expérimentés comprennent immédiatement la structure générale proposée.

Les patrons de conception se répartissent en trois grandes catégories :

CatégorieObjectifExemples
CréationComment les objets sont créésSingleton, Factory
StructureComment les objets sont composésAdapter, Decorator
ComportementComment les objets communiquentObserver, Strategy

Les modèles que nous allons explorer s'appuient directement sur les concepts de la POO que vous avez déjà appris : les interfaces, l'héritage, le polymorphisme et la composition. Chaque modèle exploite ces fondamentaux de manières spécifiques pour atteindre la flexibilité, la maintenabilité ou la réutilisabilité.

Dans les prochaines leçons, vous implémenterez plusieurs modèles essentiels, en commençant par Singleton, Factory, Observer et Strategy. Comprendre ces modèles vous aidera à reconnaître les solutions courantes dans les bases de code existantes et à prendre de meilleures décisions architecturales dans vos propres projets.

challenge icon

Défi

Facile

Construisons un système simple de catalogue de patrons qui organise les informations sur les patrons de conception dans plusieurs fichiers. Cela vous aidera à comprendre comment les patrons sont catégorisés tout en vous exerçant à une bonne organisation du code.

Vous allez créer trois fichiers pour séparer les différentes responsabilités :

  • Pattern.cs : définissez une classe Pattern dans l’espace de noms Patterns qui représente un seul patron de conception. Chaque patron doit avoir un Name, une Category (Creational, Structural ou Behavioral) et une Description. Incluez une méthode GetSummary() qui renvoie une chaîne formatée : [{Category}] {Name}: {Description}
  • PatternCatalog.cs : créez une classe PatternCatalog dans l’espace de noms Patterns qui gère une collection de patrons. Votre catalogue doit pouvoir ajouter des patrons et disposer d’une méthode GetPatternsByCategory(string category) qui renvoie une liste de tous les patrons correspondant à cette catégorie. Incluez également une méthode GetAllSummaries() qui renvoie une liste de chaînes récapitulatives pour tous les patrons du catalogue.
  • Program.cs : rassemblez tous les éléments en créant un catalogue et en le remplissant avec des patrons à partir de l’entrée. Affichez ensuite les patrons filtrés par catégorie.

Vous recevrez les entrées suivantes :

  • Le nombre de patrons à ajouter
  • Pour chaque patron : trois lignes contenant le nom, la catégorie et la description
  • Une catégorie selon laquelle effectuer le filtrage

Après avoir ajouté tous les patrons à votre catalogue, affichez, un par ligne, les récapitulatifs des patrons correspondant à la catégorie de filtrage. Si aucun patron ne correspond, affichez No patterns found.

Par exemple, si les entrées sont :

3
Singleton
Creational
Ensures only one instance exists
Observer
Behavioral
Notifies dependents of state changes
Factory
Creational
Creates objects without specifying exact class
Creational

La sortie devrait être :

[Creational] Singleton: Ensures only one instance exists
[Creational] Factory: Creates objects without specifying exact class

Ce défi montre comment organiser des classes liées dans des fichiers séparés afin de garder votre base de code propre et facile à maintenir — un principe qui devient encore plus important lorsque vous implémenterez de véritables patrons de conception dans les prochaines leçons !

Essayez vous-même

using System;
using System.Collections.Generic;
using Patterns;

class Program
{
    public static void Main(string[] args)
    {
        // Lire le nombre de motifs
        int n = Convert.ToInt32(Console.ReadLine());
        
        // Créer un nouveau PatternCatalog
        PatternCatalog catalog = new PatternCatalog();
        
        // TODO: Lire les détails de chaque motif (name, category, description)
        // et les ajouter au catalogue
        for (int i = 0; i < n; i++)
        {
            string name = Console.ReadLine();
            string category = Console.ReadLine();
            string description = Console.ReadLine();
            
            // TODO: Créer un Pattern et l'ajouter au catalogue
        }
        
        // Lire la catégorie pour filtrer
        string filterCategory = Console.ReadLine();
        
        // TODO: Obtenir les motifs par la catégorie de filtre
        // et imprimer leurs résumés
        // Si aucun motif ne correspond, imprimer "No patterns found"
    }
}
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

Entraînez-vous par vous-même : Compilateur C# en ligne