Menu
Coddy logo textTech

Introduction aux patrons de conception

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy — leçon 64 sur 87.

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 éprouvés pour résoudre des défis de conception récurrents.

Considérez les patrons de conception comme des plans. Ils ne vous fournissent pas de code fini à copier-coller, mais ils décrivent comment structurer vos classes et vos objets pour résoudre un type de problème spécifique. Les patrons que vous apprendrez exploitent les concepts de la POO que vous maîtrisez déjà : l'héritage, les interfaces, le polymorphisme et la composition.

Les patrons de conception se divisent en trois catégories principales :

CatégorieObjectifExemples
CréationLa manière dont les objets sont créésSingleton, Fabrique, Monteur
StructureLa manière dont les objets sont assemblésAdaptateur, Décorateur, Composite
ComportementLa manière dont les objets communiquentObservateur, Stratégie, Commande

Pourquoi apprendre les patrons de conception ? Ils vous offrent un vocabulaire commun avec d'autres développeurs — dire « utilisez une Factory ici » communique instantanément une idée complexe. Ils vous aident également à écrire un code plus flexible et plus facile à maintenir en appliquant des principes tels que « programmer vers une interface, pas vers une implémentation ».

Dans les prochaines leçons, vous implémenterez plusieurs patrons essentiels, en commençant par des patrons de création comme Singleton et Factory, puis en passant aux patrons de comportement comme Observer et Strategy.

challenge icon

Défi

Facile

Construisons un classificateur de modèles simple qui démontre votre compréhension des trois catégories de modèles de conception ! Vous allez créer un système qui catégorise les modèles et explique leur but, en organisant votre code sur plusieurs fichiers.

Vous allez créer trois fichiers :

  • Pattern.java : Créez une interface appelée Pattern qui définit le contrat pour tous les modèles de conception. Votre interface doit déclarer deux méthodes : String getCategory() qui retourne la catégorie du modèle (Creational, Structural, ou Behavioral), et String getPurpose() qui retourne une description de ce que fait cette catégorie de modèles.
  • PatternInfo.java : Créez trois classes qui implémentent votre interface Pattern, chacune représentant une catégorie de modèles de conception :

    CreationalPattern - doit retourner "Creational" pour la catégorie et "How objects are created" pour le but.

    StructuralPattern - doit retourner "Structural" pour la catégorie et "How objects are composed" pour le but.

    BehavioralPattern - doit retourner "Behavioral" pour la catégorie et "How objects communicate" pour le but.

  • Main.java : Rassemblez votre classificateur de modèles ! Vous recevrez une entrée : un nom de modèle (String) qui sera l'un des suivants : "Singleton", "Factory", "Adapter", "Decorator", "Observer", ou "Strategy".

    En fonction de l'entrée, créez l'objet de modèle approprié :

    • "Singleton" et "Factory" sont des modèles Creational
    • "Adapter" et "Decorator" sont des modèles Structural
    • "Observer" et "Strategy" sont des modèles Behavioral

    Stockez votre objet de modèle dans une variable de type Pattern (l'interface), démontrant le principe de programmation vers une interface. Ensuite, affichez les trois lignes suivantes :

    Pattern: [input pattern name]

    Category: [category from getCategory()]

    Purpose: [purpose from getPurpose()]

Vous recevrez une entrée : le nom d'un modèle de conception (String).

Ce défi renforce l'idée clé de la leçon : les modèles de conception sont organisés en catégories basées sur le problème qu'ils résolvent. En utilisant une interface, vous pratiquez également le principe de « programmer vers une interface, pas vers une implémentation » - un concept central qui rend les modèles de conception si puissants !

Aide-mémoire

Les patrons de conception (design patterns) sont des solutions éprouvées à des problèmes courants dans le développement de logiciels. Ce sont des modèles qui décrivent comment structurer les classes et les objets pour résoudre des types de problèmes spécifiques.

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

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

Les patrons de conception fournissent un vocabulaire commun aux développeurs et aident à écrire un code plus flexible et maintenable en appliquant des principes tels que « programmer vers une interface, pas vers une implémentation ».

Essayez vous-même

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String patternName = scanner.nextLine();
        
        // TODO: Déclarer une variable de type Pattern (l'interface)
        Pattern pattern = null;
        
        // TODO: En fonction de patternName, créer l'objet pattern approprié :
        // - "Singleton" et "Factory" sont des patrons Creational
        // - "Adapter" et "Decorator" sont des patrons Structural
        // - "Observer" et "Strategy" sont des patrons Behavioral
        
        // TODO: Afficher la sortie au format suivant :
        // Pattern: [input pattern name]
        // Category: [category de getCategory()]
        // Purpose: [purpose de getPurpose()]
    }
}
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