Retour

🎨 Design Patterns

Patterns de Conception Essentiels

🔨 Singleton

Une seule instance de la classe dans toute l'application.

public class Database {
    private static Database instance;
    private Database() {} // Constructeur privé
    public static Database getInstance() {
        if (instance == null) {
            instance = new Database();
        }
        return instance;
    }
}

Utilisation : Connexion BDD, Logger, Config...

🏭 Factory

Créer des objets sans spécifier leur classe exacte.

interface Animal { void speak(); }
class Dog implements Animal { 
    public void speak() { System.out.println("Woof!"); }
}
class Cat implements Animal { 
    public void speak() { System.out.println("Meow!"); }
}
class AnimalFactory {
    public Animal createAnimal(String type) {
        if (type.equals("dog")) return new Dog();
        if (type.equals("cat")) return new Cat();
        return null;
    }
}

👁️ Observer

Notification automatique quand un objet change d'état.

interface Observer {
    void update(String message);
}
class Subject {
    private List<Observer> observers = new ArrayList<>();
    public void attach(Observer o) {
        observers.add(o);
    }
    public void notifyObservers(String msg) {
        for (Observer o : observers) {
            o.update(msg);
        }
    }
}

Utilisation : UI events, pub/sub, real-time updates...

🧱 Builder

Construire des objets complexes étape par étape.

User user = new User.Builder()
    .setName("Alice")
    .setEmail("alice@example.com")
    .setAge(25)
    .build();

🎯 Strategy

Algorithmes interchangeables à runtime.

interface PaymentStrategy {
    void pay(int amount);
}
class CreditCard implements PaymentStrategy {
    public void pay(int amount) { /* paiement CB */ }
}
class PayPal implements PaymentStrategy {
    public void pay(int amount) { /* paiement PayPal */ }
}

🎮 Quiz Interactif !

Réponds aux questions et apprends en t'amusant !

💡 Feedback immédiat après chaque réponse

Glisser pour continuer vers SOLID & Clean Code
⬇️