Applikazzjoni SOLID ta’ Prinċipji fi Node.js

Single Responsibility Principle(SRP)

Dan il-prinċipju jgħid li klassi għandu jkollha raġuni waħda biss biex tinbidel, jiġifieri kull klassi għandha twettaq funzjoni speċifika.

Eżempju: Ġestjoni tad-dejta tal-utent u tibgħat email notifiki.

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

Open/Closed Principle(OCP)

Dan il-prinċipju jinkoraġġixxi l-estensjoni tal-funzjonalità billi żżid kodiċi ġdid aktar milli jimmodifika kodiċi eżistenti.

Eżempju: Immaniġġjar ta' metodi ta' ħlas differenti f'applikazzjoni tal-kummerċ elettroniku.

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)

Dan il-prinċipju jasserixxi li oġġetti ta' klassi derivata għandhom ikunu sostitwibbli għal oġġetti tal-klassi bażi mingħajr ma jaffettwaw il-korrettezza tal-programm.

Eżempju: Ġestjoni ta' forom ġeometriċi.

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;  
  }  
}  

Prinċipju ta' Segregazzjoni tal-Interface(ISP)

Dan il-prinċipju jagħti parir li l-interfaces jitkissru f'oħrajn iżgħar biex jiġi evitat li l-klassijiet jiġu mġiegħla jimplimentaw metodi li m'għandhomx bżonn.

Eżempju: Interfaces għall-aġġornament u l-wiri tad-dejta.

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

Dependency Inversion Principle(DIP)

Dan il-prinċipju jissuġġerixxi li moduli ta' livell għoli m'għandhomx jiddependu fuq moduli ta' livell baxx; it-tnejn għandhom jiddependu fuq l-astrazzjonijiet.

Eżempju: L-użu dependency injection biex jimmaniġġjaw id-dipendenzi.

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

Ftakar, dawn l-eżempji huma biss illustrazzjonijiet ta’ kif tapplika l- SOLID prinċipji f’ Node.js. Fil-prattika, ikollok bżonn tapplikahom b'mod flessibbli abbażi tal-iskop u l-iskala tal-proġett tiegħek.