📝 Ce que vous apprendrez
- Qu'est-ce que la méthode Factory ?
- En quoi elle diffère de la simple instanciation
- Comment l'implémenter en Java
- Cas d'utilisation dans le monde réel
- Pièges et conseils
🔍 Qu'est-ce que le modèle de la méthode Factory ?
Le Factory Method Pattern définit une interface pour la création d'un objet, mais permet aux sous-classes de décider de la classe à instancier.
Il favorise le couplage souple en évitant la création directe d'objets.
🎯 Quand utiliser la méthode Factory ?
Utiliser la méthode d'usine lorsque :
- Votre code doit décider quelle classe doit être instanciée au moment de l'exécution.
- Vous souhaitez masquer la logique de création des objets
- Vous avez affaire à des familles d'objets apparentés
- Vous devez respecter le principe d'ouverture/fermeture.
🧱 Mise en œuvre de base en Java
🧩 Étape 1 : Définir l'interface du produit
public interface Notification {
void notifyUser();
}
🧩 Étape 2 : Créer des implémentations concrètes
public class EmailNotification implements Notification {
public void notifyUser() {
System.out.println("Sending an Email Notification");
}
}
public class SMSNotification implements Notification {
public void notifyUser() {
System.out.println("Sending an SMS Notification");
}
}
🧩 Étape 3 : Créer la classe d'usine
public class NotificationFactory {
public Notification createNotification(String type) {
if (type == null || type.isEmpty()) return null;
switch (type.toLowerCase()) {
case "sms": return new SMSNotification();
case "email": return new EmailNotification();
default: return null;
}
}
}
✅ Usage
NotificationFactory factory = new NotificationFactory();
Notification notification = factory.createNotification("email");
notification.notifyUser();
💡 Analogie avec le monde réel
Imaginez un service de livraison. Vous passez une commande et, en fonction de l'endroit où vous vous trouvez ou de votre article, le service décide de l'envoyer par vélo, camion ou drone.
Vous ne décidez pas comment il arrive à destination - c'est le travail de l'usine.
⚠️ Les pièges à éviter
- ❌ Faire en sorte que la classe d'usine en fasse trop - des préoccupations distinctes
- ❌ Codage en dur des types au lieu d'utiliser des enums ou des constantes
- ❌ Oublier de suivre l'interface/abstraction
✅ Meilleures pratiques
- Utiliser des interfaces ou des classes abstraites pour les produits
- Encapsuler la logique de création d'objets
- Rendre votre usine facilement extensible (principe ouvert/fermé)
- Envisager de combiner avec des frameworks Dependency Injection pour un code plus propre
📘 Recap
- La méthode Factory permet de déléguer la logique de création des objets
- Il simplifie le code et favorise la flexibilité
- Convient le mieux aux situations où il faut décider du type d'objet au moment de l'exécution.
- Les classes sont peu couplées et testables.