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.