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