Factory Method
Architecture 🟢 JuniorDefinition
Definit une interface pour creer un objet, mais laisse les sous-classes decider quelle classe instancier. Permet de deleguer la logique de creation.
Analogie
Un restaurant avec une carte : tu choisis 'pizza' et la cuisine decide quelle recette exacte preparer.
Exemple de code
class NotifFactory {
create(type) {
if (type === 'email') return new EmailNotif();
if (type === 'sms') return new SmsNotif();
throw new Error('Unknown type');
}
}
Cas d'usage
Quand la logique de creation varie selon le contexte et qu'on veut eviter les if/else dans le code client.
Anti-pattern
Mettre toute la logique de creation dans le constructeur au lieu de la deleguer.