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 ۔ عملی طور پر، آپ کو اپنے پروجیکٹ کے مقصد اور پیمانے کی بنیاد پر انہیں لچکدار طریقے سے لاگو کرنے کی ضرورت ہوگی۔