Modèles de conception en JavaScript : exemples pour Node.js

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Modèles de conception en JavaScript avec des exemples pour Node.js



Les modèles de conception sont des solutions éprouvées aux problèmes de développement typiques. En JavaScript, en particulier dans l'environnement Node.js, ils aident à créer un code évolutif, maintenable et réutilisable. Dans cet article, nous allons examiner quatre modèles principaux : Singleton, Factory, Observer et Module, avec des exemples pratiques.



1. Modèle Singleton



Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à celle-ci. Dans Node.js, cela est souvent utilisé pour la connexion à une base de données ou la configuration de l'application.



Implémentation de Singleton dans Node.js



class Database {  constructor() {    if (Database.instance) {      return Database.instance;    }    this.connection = null;    Database.instance = this;  }

async connect(uri) { // Simulation de connexion à la base de données this.connection = `Connected to ${uri}`; console.log(this.connection); }

getConnection() { return this.connection; }}

// Utilisationconst db1 = new Database();const db2 = new Database();

console.log(db1 === db2); // true

db1.connect('mongodb://localhost:27017/myapp');console.log(db2.getConnection()); // "Connected to mongodb://localhost:27017/myapp"


Quand l'utiliser : Gestion d'un pool de connexions, journalisation globale, systèmes de cache.



2. Modèle Factory



Factory permet de créer des objets sans spécifier la classe concrète. Il centralise la logique de création d'objets, simplifiant la maintenance du code.



Implémentation de Factory pour des validateurs



class EmailValidator {  validate(value) {    return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);  }}

class PhoneValidator { validate(value) { return /^\\+?[\\d\\s\\-()]{7,15}$/.test(value); }}

class ValidatorFactory { createValidator(type) { switch (type) { case 'email': return new EmailValidator(); case 'phone': return new PhoneValidator(); default: throw new Error('Unknown validator type'); } }}

// Utilisationconst factory = new ValidatorFactory();const emailValidator = factory.createValidator('email');

console.log(emailValidator.validate('test@example.com')); // trueconsole.log(emailValidator.validate('invalid')); // false


Quand l'utiliser : Création d'objets complexes, travail avec différents formats de données (JSON, XML, YAML), génération de composants d'interface utilisateur.



3. Modèle Observer



Observer crée un mécanisme d'abonnement, permettant à certains objets (observateurs) de surveiller les changements dans un autre objet (sujet). Dans Node.js, ce modèle est intégré via la classe EventEmitter.



Implémentation d'Observer avec EventEmitter



const EventEmitter = require('events');

class NewsPublisher extends EventEmitter { publishArticle(title) { console.log(`📰 Article publié : ${title}`); this.emit('article', { title, date: new Date() }); }}

class Subscriber { constructor(name) { this.name = name; }

receiveArticle(article) { console.log(`🔔 ${this.name} a reçu : "${article.title}"`); }}

// Utilisationconst publisher = new NewsPublisher();const subscriber1 = new Subscriber('Anna');const subscriber2 = new Subscriber('Ivan');

publisher.on('article', (data) => subscriber1.receiveArticle(data));publisher.on('article', (data) => subscriber2.receiveArticle(data));

publisher.publishArticle('Modèles de conception en JavaScript');// Sortie :// 📰 Article publié : Modèles de conception en JavaScript// 🔔 Anna a reçu : "Modèles de conception en JavaScript"// 🔔 Ivan a reçu : "Modèles de conception en JavaScript"


Quand l'utiliser

Blogs

Book Recommendations