Single Responsibility Principle(SRP)
Tento princip říká, že třída by měla mít pouze jeden důvod ke změně, což znamená, že každá třída by měla plnit určitou funkci.
Příklad: Správa uživatelských dat a zasílání email upozornění.
class UserManager {
constructor() {}
createUser(userData) {
// Logic for creating a user
}
}
class EmailService {
constructor() {}
sendEmail(emailData) {
// Logic for sending an email
}
}
Open/Closed Principle(OCP)
Tento princip podporuje rozšiřování funkčnosti přidáním nového kódu spíše než úpravou stávajícího kódu.
Příklad: Manipulace s různými platebními metodami v aplikaci elektronického obchodu.
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)
Tento princip tvrdí, že objekty odvozené třídy by měly být nahraditelné objekty základní třídy, aniž by to ovlivnilo správnost programu.
Příklad: Správa geometrických tvarů.
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;
}
}
ninterface segregační princip(ISP)
Tento princip doporučuje rozdělit rozhraní na menší, aby se zabránilo nucení tříd implementovat metody, které nepotřebují.
Příklad: Rozhraní pro aktualizaci a zobrazování dat.
class UpdateableFeature {
updateFeature() {}
}
class DisplayableFeature {
displayFeature() {}
}
Dependency Inversion Principle(DIP)
Tento princip naznačuje, že moduly na vysoké úrovni by neměly záviset na modulech nízké úrovně; obojí by mělo záviset na abstrakcích.
Příklad: Použití dependency injection ke správě závislostí.
class OrderProcessor {
constructor(dbConnection, emailService) {
this.dbConnection = dbConnection;
this.emailService = emailService;
}
}
Pamatujte, že tyto příklady jsou pouze ilustracemi, jak aplikovat SOLID principy v Node.js. V praxi je budete muset aplikovat flexibilně na základě účelu a rozsahu vašeho projektu.