SOLID ਵਿੱਚ ਸਿਧਾਂਤ ਲਾਗੂ ਕਰਨਾ Node.js

Single Responsibility Principle(SRP)

ਇਹ ਸਿਧਾਂਤ ਦੱਸਦਾ ਹੈ ਕਿ ਇੱਕ ਕਲਾਸ ਨੂੰ ਬਦਲਣ ਦਾ ਇੱਕ ਹੀ ਕਾਰਨ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਭਾਵ ਹਰੇਕ ਕਲਾਸ ਨੂੰ ਇੱਕ ਖਾਸ ਫੰਕਸ਼ਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।

ਉਦਾਹਰਨ: ਉਪਭੋਗਤਾ ਡੇਟਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਅਤੇ email ਸੂਚਨਾਵਾਂ ਭੇਜਣਾ।

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

Open/Closed Principle(OCP)

ਇਹ ਸਿਧਾਂਤ ਮੌਜੂਦਾ ਕੋਡ ਨੂੰ ਸੋਧਣ ਦੀ ਬਜਾਏ ਨਵਾਂ ਕੋਡ ਜੋੜ ਕੇ ਕਾਰਜਕੁਸ਼ਲਤਾ ਵਧਾਉਣ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ।

ਉਦਾਹਰਨ: ਇੱਕ ਈ-ਕਾਮਰਸ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਨੂੰ ਸੰਭਾਲਣਾ।

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)

ਇਹ ਸਿਧਾਂਤ ਦਾਅਵਾ ਕਰਦਾ ਹੈ ਕਿ ਪ੍ਰੋਗ੍ਰਾਮ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕੀਤੇ ਬਿਨਾਂ ਇੱਕ ਪ੍ਰਾਪਤ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਵਸਤੂਆਂ ਨੂੰ ਅਧਾਰ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਵਸਤੂਆਂ ਲਈ ਬਦਲਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।

ਉਦਾਹਰਨ: ਜਿਓਮੈਟ੍ਰਿਕ ਆਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ।

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

ਇੰਟਰਫੇਸ ਸੇਗਰੀਗੇਸ਼ਨ ਸਿਧਾਂਤ(ISP)

ਇਹ ਸਿਧਾਂਤ ਕਲਾਸਾਂ ਨੂੰ ਉਹਨਾਂ ਤਰੀਕਿਆਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਨ ਤੋਂ ਬਚਣ ਲਈ ਇੰਟਰਫੇਸ ਨੂੰ ਛੋਟੇ ਵਿੱਚ ਤੋੜਨ ਦੀ ਸਲਾਹ ਦਿੰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਉਹਨਾਂ ਨੂੰ ਲੋੜ ਨਹੀਂ ਹੈ।

ਉਦਾਹਰਨ: ਡੇਟਾ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਅਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਇੰਟਰਫੇਸ।

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

Dependency Inversion Principle(DIP)

ਇਹ ਸਿਧਾਂਤ ਸੁਝਾਅ ਦਿੰਦਾ ਹੈ ਕਿ ਉੱਚ-ਪੱਧਰੀ ਮੋਡੀਊਲ ਨੂੰ ਹੇਠਲੇ-ਪੱਧਰ ਦੇ ਮੋਡੀਊਲਾਂ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ; ਦੋਵਾਂ ਨੂੰ ਐਬਸਟਰੈਕਸ਼ਨ 'ਤੇ ਨਿਰਭਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।

ਉਦਾਹਰਨ: dependency injection ਨਿਰਭਰਤਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਵਰਤੋਂ।

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

SOLID ਯਾਦ ਰੱਖੋ, ਇਹ ਉਦਾਹਰਨਾਂ ਸਿਰਫ਼ ਇਸ ਗੱਲ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਹਨ ਕਿ ਸਿਧਾਂਤਾਂ ਨੂੰ ਕਿਵੇਂ ਲਾਗੂ ਕਰਨਾ ਹੈ Node.js । ਅਭਿਆਸ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਉਦੇਸ਼ ਅਤੇ ਪੈਮਾਨੇ ਦੇ ਆਧਾਰ 'ਤੇ ਉਹਨਾਂ ਨੂੰ ਲਚਕਦਾਰ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।