SOLID Az alapelvek alkalmazása Node.js

Single Responsibility Principle(SRP)

Ez az elv kimondja, hogy egy osztálynak csak egy oka lehet a változásra, vagyis minden osztálynak meghatározott funkciót kell ellátnia.

Példa: Felhasználói adatok kezelése és email értesítések küldése.

class UserManager {  
  constructor() {}  
    
  createUser(userData) {  
    // Logic for creating a user  
  }  
}  
  
class EmailService {  
  constructor() {}  
    
  sendEmail(emailData) {  
    // Logic for sending an email  
  }  
}  

Open/Closed Principle(OCP)

Ez az elv a meglévő kód módosítása helyett a funkcionalitás bővítését ösztönzi új kód hozzáadásával.

Példa: Különféle fizetési módok kezelése egy e-kereskedelmi alkalmazásban.

class PaymentProcessor {  
  processPayment() {  
    // Common logic for payment processing  
  }  
}  
  
class CreditCardPaymentProcessor extends PaymentProcessor {  
  processPayment() {  
    // Logic for processing credit card payment  
  }  
}  
  
class PayPalPaymentProcessor extends PaymentProcessor {  
  processPayment() {  
    // Logic for processing PayPal payment  
  }  
}  

Liskov Substitution Principle(LSP)

Ez az elv azt állítja, hogy a származtatott osztály objektumai helyettesíthetők az alaposztály objektumaival anélkül, hogy ez befolyásolná a program helyességét.

Példa: Geometriai alakzatok kezelése.

class Shape {  
  area() {}  
}  
  
class Rectangle extends Shape {  
  constructor(width, height) {}  
    
  area() {  
    return this.width * this.height;  
  }  
}  
  
class Square extends Shape {  
  constructor(side) {}  
    
  area() {  
    return this.side * this.side;  
  }  
}  

interfész szegregációs elv(ISP)

Ez az elv azt tanácsolja, hogy az interfészeket kisebbre bontsa, nehogy az osztályok olyan módszereket kényszerítsenek, amelyekre nincs szükségük.

Példa: Interfészek adatok frissítéséhez és megjelenítéséhez.

class UpdateableFeature {  
  updateFeature() {}  
}  
  
class DisplayableFeature {  
  displayFeature() {}  
}  

Dependency Inversion Principle(DIP)

Ez az elv azt sugallja, hogy a magas szintű modulok nem függhetnek az alacsony szintű moduloktól; mindkettőnek az absztrakciótól kell függnie.

Példa: Használata dependency injection függőségek kezelésére.

class OrderProcessor {  
  constructor(dbConnection, emailService) {  
    this.dbConnection = dbConnection;  
    this.emailService = emailService;  
  }  
}  

Ne feledje, hogy ezek a példák csak illusztrációk az SOLID alapelvek alkalmazására vonatkozóan Node.js. A gyakorlatban ezeket rugalmasan kell alkalmaznia a projekt célja és mértéke alapján.